Autor Zpráva
Mondi
Profil *
Dobrý den,

mám stránku a na ní mám input text u kterého chci zamezit vkládání určitých znaků. Jde to a jestli ano, tak jak?

Předem děkuji za rady.
Leo
Profil
JavaScript na strane klienta (prohlizece) a PHP (nebo jiny jazyk) na strane serveru, v obem pak regularni vyrazivo. Leo
Mondi
Profil *
Děkuji za odpověď.
Mám ještě jeden dotaz a to jak přesněji by měl ten js vypadat např. pro čísla a znaménko +.
Předem děkuji za nápovědu.
Mondi
Profil *
Našel jsem pár příkladu s použitou udalosti onChange, ale bohuzel to nefunguje...

<html>
<SCRIPT LANGUAGE="JavaScript1.2">
function getInfo(){
re = /(\w+)\s(\d+)/;
re.exec();
document.alert(RegExp.$1 + ", your age is " + RegExp.$2);
}
</script>
Vloz jmeno a vek a pak odentruj.
<form>
<input type="text" name="NameAge" onChange="getInfo(this);">
</form>
</html>

Můj přesný cíl stránky je takoví aby když někdo zapisuje do input se to kontrolovalo ihned a zamezilo to napsání jiných symbolu okamžitě a né až na straně serveru...

Prosím o nějaké rady a předem děkuji za každou...
Leo
Profil
"zamezilo to napsání jiných symbolu okamžitě a né až na straně serveru..."

To je dost extremni varianta, lidi vas nebudou mit radi :-) Spis to udelejte tak, ze tam ty symboly muzou napsat, ale hlasi jim to, ze tam nepatri. Misto onchange zkuste onkeyup, alert neni metoda document, ale window, atd. Leo
Mondi
Profil *
"To je dost extremni varianta, lidi vas nebudou mit radi :-)"

To doufam, ze ne... :D Jinak moc dík za radu, která pomohla... :)
Leo
Profil
Jeste doplnim jak jsem to myslel - jedna moznost (ta nejhorsi) je skutecne zakazat psani do policka (detekujete udalost onkeypress, a vracite false). Rozumnejsi varianta je detekovat onkeyup, a na zaklade vyhodnoceni jen dat uzivateli vedet jak je na tom (treba se da menit barva psaneho textu). No a pak je zaverecna kontrola (porad na strane klienta) pri onsubmit na formu - pokus o odeslani, pokud nevyhovi, zablokuju pres false plus rada uzivateli. Samozrejme VZDYCKY to pak jeste musite kontrolovat na serveru, Leo
Mondi
Profil *
Tak jsem zkusil udělat tu nejhorší variantu, ale stejně mi to nefunguje... : ( Já sem, ale lama lamerska : )

Tady davám příklad na kterým to zkouším, ale nefunguje, tak bych byl rád za radu... :)

<html>
<SCRIPT LANGUAGE="JavaScript1.2">
function validate(obj){
if((obj != '1') || (obj != '2'))
return false;
}
</SCRIPT>
Vloz cislo 1, nebo 2.
<form>
<input type="text" name="cisla" onkeypress="validate(this);">
</form>
</html>

Předem dík... : )
Leo
Profil
1, this (obj) je element inputu, vy potrebujete vedet, jaka klavesa byla zmacknuta, a to uz je prace s objektem event...

2, onkeypress = "return validate(this)"

Leo
Mondi
Profil
Dobrý den, tak jsem se koukal po netu a vypadlo mi něco jako toto, ale bohůžel to nefunguje... :(
Prosím poraďte mi už jsem v koncích a nevím co s tím mám... :(

<html>
<SCRIPT LANGUAGE="JavaScript1.2">
function jenCislo(e)
{var k;
if (!e) {var e=window.event;}
k=e.charCode?e.charCode:e.keyCode?e.keyCode:e.which;
if (k>='48' || k<='57') {alert('Je číslo ' + k);} else {alert('Není číslo ' + k);} //k vrací undefined hodnotu
}
</SCRIPT>

<input class="text" type="text" name="psc" width="128" value="<?php echo $psc; ?>" onkeydown="return jenCislo(this)">
</html>

Děkuji za odpovědi.
Leo
Profil
Zkuste pro zacatek volani

jenCislo()

misto

jenCislo(this)

Leo
Mondi
Profil
Zkusil jsem to, ale pak to nevyhodí ani jeden alert z podmínky..jako by se ani ta funkce neprovedla...
Leo
Profil
Tak alert nedavejte do podminky :-) Pokud chcete vedet, jestli se fce vola, dejte ho hned na zacatek fce, treba alert('ok'), v dalsim kroku muzete mit treba alert(k), atd. Leo
Leo
Profil
A tohle

k>='48'

taky asi nebude fungovat jak si predstavujete, proc ty uvozovky? Leo
Mondi
Profil
Děkuji za rady, moc pomáhají. Zkusil jsem malý testik, ale bohůžel nevím, kde je zakopaný pes. :( Podle mě je to v tom (k=e.charCode?e.charCode:e.keyCode?e.keyCode:e.which;), ale nevím, protože tomu jedinýmu v tom scriptu nerozumím. :(

<html>

<SCRIPT LANGUAGE="JavaScript1.2">
function jenCislo(e)
{var k;
alert('Klavesa: ' + e); // e = undefined, pří volání fce pomocí jenCislo(this) zde bylo [object HTMLInputElement]
if (!e) {var e=window.event;}
alert('Co je po if: ' + e); // e = undefined, pří volání fce pomocí jenCislo(this) zde bylo [object HTMLInputElement]
k=e.charCode?e.charCode:e.keyCode?e.keyCode:e.which;
alert('ASCII Cislo: ' + k); // nic neudělá, pří volání fce pomocí jenCislo(this) zde bylo undefined
if (k<48 || k>57) {alert('Není číslo' + k);}
}
</SCRIPT>

<input class="text" type="text" name="psc" width="128" value="<?php echo $psc; ?>" onkeypress="jenCislo()">

</html>
Leo
Profil
Oj, moje chyba :-) Volejte takhle:

jenCislo(event)

Leo
Mondi
Profil
Mockrát děkuji za pomoc, už to jede, ale teď mám jiný problém a to je jak zabránit vytištění toho špatného znaku. :-)
Mondi
Profil
Tak jsem to vyřešil takto:

<SCRIPT LANGUAGE="JavaScript1.2">
function jenCislo(e)
{var k;
if (!e) {var e=window.event;}
k=e.charCode?e.charCode:e.keyCode?e.keyCode:e.which;
if ((k==32 || k (k>40 && k<45)) || (k==47 || k>57)) {return false;} else {return true;}
}
</SCRIPT>

<input class="text" type="text" name="psc" width="128" maxlength="5" value="<?php echo $psc; ?>" onkeypress="return jenCislo(event)">

Jen by mě zajímalo zda nejde nějak lépe ošetřit stisknuté klávesy. Toto ověření funguje, ale člověk může díky povoleným šipkám a klávesám (Ins, Del, Home, End, PgUp, PgDn, Backspace, atd...) zadat i znaky ($, # atd...). Vím je to kvůli ASCII, ale nevím jak to ošetřit.
Leo
Profil
A co vlastne chcete POVOLIT? Leo
Mondi
Profil
:) Chtěl bych mít povoleny čísla a taky ovládací prvky klávesnice jako jsou Esc, Del, Backspace, Tab, šipky atd.. :) A chci zakázat všechny viditelné znaky jako a-Z @#$%^&*()-,./+\ atd...
Leo
Profil
Myslim, ze ne to jdete uplne spatne - povolte vsechno, a kontrolujte obsah policka pred odeslanim, budete mit jednodussi zivot, a vasi uzivatele taky, Leo
Mondi
Profil
Dobře, udělám to jak mi radíte(i když nevím jak:) Kdyby ste mi sem napsal malinkatý příklad byl bych vám vděčný. :) ), ale stejně by mě zajímalo jak to udělat aby to šlo, tak jak si představuji. Ono se to může třeba někdy v budoucnu hodit. ;)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0