Autor | Zpráva | ||
---|---|---|---|
paolo Profil * |
#1 · Zasláno: 28. 10. 2006, 10:45:15
Ahoj, nevíte, jak udělat, aby se do formulářového políčka (input=text) daly napsat pouze číslice a ne slova?
Nejlepší by bylo, kdyby se po napsání čehokoliv (písmena, mezery, různé znaky...) co není číslice ihned toto mazalo, ale pokud to jde udělat jinak, rád si nechám poradit. Děkuji. |
||
Jan Tvrdík Profil |
#2 · Zasláno: 28. 10. 2006, 11:57:52
Javascriptem je to nanic, můžu si ho vypnout.
|
||
paolo Profil * |
#3 · Zasláno: 28. 10. 2006, 11:59:22
Počítejme s tím, že je JS zapnutý.
|
||
peta Profil * |
#4 · Zasláno: 28. 10. 2006, 13:16:49
paolo
proc? kontroluj to pak v PHP. http://www.volny.cz/peter.mlich/www.htm#mssub17 Ale jestli to chces primo prepisovat, tak musis odchytavat klavesy a porovnavat, zda se jedna o tvuj input a kdesi cosi, zbytecne komplikovane. |
||
paolo Profil * |
#5 · Zasláno: 28. 10. 2006, 13:24:07
Pokud by to šlo, tak bych to tedy přes PHP dělal, jen to na tom odkazu nikde nemohu najít :-(
|
||
Joker Profil |
#6 · Zasláno: 28. 10. 2006, 16:32:24
Jan Tvrdík
Já bych ten JS až takhle neodsuzoval. Javascriptová kontrola může při správném použití mít význam. Jde o to, že můžete validovat data interaktivně, bez odeslání na server. Důležité ale je, že na serveru musíte ověřit data znova, nesmíte se spolehnout, že už byla ověřena Javascriptem. Smysl Javascriptu je tady v tom, že klient nemusí čekat na odeslání formuláře a načtení nové stránky, jen aby zjistil že někde udělal chybu a mohl formulář odesílat znovu. paolo Dalo by se to udělat třeba regulárním výrazem, testovací funkce by mohla vypadat například takhle: var policko = document.getElementById ? document.getElementById("policko") : false; var regExp = /^(\d+)$/; // regulární výraz- začátek řetězce, pak jedna nebo víc číslic a konec řetězce if(policko && policko.value && (policko.value != "")){ if(!regExp.test(policko.value)){ alert("Musíte zadat pouze čísla!"); policko.value = ""; // vymažeme hodnotu políčka //případný další kód } } Po vymazání hodnoty políčka by ještě šlo pomocí policko.focus() nastavit fokus zpět na políčko, což ale nemusí být v některých případech zrovna uživatelsky příjemné. offtopic, zábavná historka: kdysi jsem psal podobné skripty pro jednu intranetovou aplikaci, kde byly desítky políček a u mnoha byly na onblur() navázané i poměrně složité kontroly, které ještě navíc nastavovaly hodnoty některých dalších políček. Při neúspěšné kontrole se fokus vracel zpátky do toho políčka. No a samozřejmě co se nestalo: jednou se někde nastavila zrovna tak blbá hodnota, že způsobila neplatnost aktuálního políčka i následujícího políčka. Na tabulátor se vyvolalo onblur(), fokus se přepnul na následující políčko, provedla kontrola, vyhodila hláška a fokus přepnul zpátky na to první políčko... čímž vyvolal onblur toho druhého políčka, provedla se kontrola, vyhodila jiná hláška a fokus přepnul na to druhé políčko... čímž vyvolal onblur toho prvního políčka... až do doby, než to uživatele přestalo bavit a sestřelil IE přes task manager. Uštěpačná poznámka, v Opeře by se tohle stát nemohlo, v Opeře stačí zaškrtnout "Zastavit provádění skriptů této stránky" ;-) |
||
peta Profil * |
#7 · Zasláno: 28. 10. 2006, 18:13:34
Joker
V podstate by mohlo stacit... var x=neco.value; if (x*1 == x) {je cislo} else {neni cislo} paolo na tom odkazu jsou regularni vyrazy v JS priklad na validaci je nekde v prikladech JS na jakpsatweb |
||
peta Profil * |
#8 · Zasláno: 28. 10. 2006, 18:16:56
Joker
"offtopic, zábavná historka:" Jj, presne takovy "programatori" by nemeli vubec uverejnovat JS na inet, kdyz to neumi osetrit :) Ve FF je take odstreleni scriptu za jisty casovy interval, jenze tys to mel osetri tak, aby se neco takoveho vubec nemohlo stat. A dyz uz, aby se script volal nejaky maximalni pocetkrat. |
||
Joker Profil |
#9 · Zasláno: 28. 10. 2006, 19:12:47
peta
V podstate by mohlo stacit... if (x*1 == x) {je cislo} Mohlo by, i když touhle kontrolou projdou například vstupy " 123 " anebo "0xaaa". Jj, presne takovy "programatori" by nemeli vubec uverejnovat JS na inet, kdyz to neumi osetrit :) Za prvé to na inet ani nikdy jít nemělo a za druhé se tahle chyba samozřejmě opravila ještě během vývoje ;) |
||
peta Profil * |
#10 · Zasláno: 28. 10. 2006, 19:27:16
Joker
Tak to s mezerou by nevadilo a to hexa, to je sporny, ale mozna take ne. Ale ten hexa by mi osobne vadil, to uznavam :) |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0