Autor | Zpráva | ||
---|---|---|---|
EquilibriumX Profil * |
#1 · Zasláno: 20. 7. 2005, 15:41:13
Ahoj,
mám textový input, do nějž by se měla psát pouze čísla a pouze v určitém rozsahu. Na formuláři na událost onsubmit chci volat funkci, která ošetří ten rozsah (to mám), ale i přes to mi přes formulář projdou znaky. Jak ošetřit, aby se nemohly zadat znaky? Resp. jak lze odlišit znak od čísla? Děkuju za odpověď! |
||
Hugo Profil |
#2 · Zasláno: 20. 7. 2005, 15:50:24
Asi nejlip pomoci regularnich vyrazu, mozna v JS existuje obdoba Is_Numeric() z php, ale to bohuzel nevim.
|
||
Mistr Profil |
#3 · Zasláno: 20. 7. 2005, 17:04:58
Zkus třeba obsah toho inputu vynásobit jedničkou a uvidíš. Když Ti to zahlásí nějakou čuňárnu, tak to číslo není. Jinak to je OK. Ale nevím, zda to bude fungovat, ruku do ohně za to nestrkám.
Ještě upozorňuji, že JavaScript, protože je z anglického prostředí, používá tečku (nikoliv čárku!) k oddělení desetinných míst. |
||
EquilibriumX Profil * |
#4 · Zasláno: 20. 7. 2005, 18:36:19
Děkuju za rady!
Pro ostatní: trošku jsem zapátral a zjistil, že přímo JavaScript obsahuje funkci na zjištění, zda je zadaný řetězec (číslo) znak nebo číslo. isNaN() vrací false, pokud je řetězec předaný v parametru pouze číslo.. |
||
Mistr Profil |
#5 · Zasláno: 20. 7. 2005, 19:50:53
Mě to napadlo, ale nebyl jsem si úplně jistý, tak jsem Tě nechtěl mást.
|
||
Rob Profil |
#6 · Zasláno: 20. 7. 2005, 21:30:51
Já vím, že pokud použiješ window.prompt(), tak ti to do proměné uloží číslo pokud ho tam napíšeš.
|
||
Časová prodleva: 8 dní
|
|||
Pajuc Profil * |
#7 · Zasláno: 28. 7. 2005, 14:45:29
Ahoj,
kdysi dávno jsem našel skript, který přímo blokoval anumerické znaky. Princip je tento: po stisku klávesy se zavolá funkce, která zjistí kód klávesy. Podle toho se rozhodne, zda se znak napíše. Výhoda je jasná - uživatel hned zjistí, že do políčka číslice psát nemůže (ledaže by je tam vložil). Ale podotýkám, že přiřazený kód některých kláves se mění při změně jazyka klávesnice a nezjišťoval jsem, jak je tomu u těch číselných.
|
||
peta Profil * |
#8 · Zasláno: 28. 7. 2005, 21:50:44
Pajuc nejaky slozity :)
function klavesa2(e) {var k; if (!e) e=window.event; k=(e.which)?e.which:e.keyCode; if (k<48 || k>57) Odstran_posledni_napsany_znak() } a dokonce misto k to lze priradit to ecka e=(e.which)?e.which:e.keyCode; |
||
Pajuc Profil * |
#9 · Zasláno: 29. 7. 2005, 17:04:51
>Pajuc nejaky slozity :)
Co kdyby sis ten můj kód (on vlastně není můj) prošel pozorněji :) Jinak proti zjednodušení nic nemám, pusť se do toho znovu. |
||
Leo Profil |
#10 · Zasláno: 29. 7. 2005, 20:04:52
isNaN ovsem vrati true treba na takovyhle retezec: 0xaf (cislo v sestnactkove soustave), Leo
|
||
Pajuc Profil * |
#11 · Zasláno: 30. 7. 2005, 12:23:17
To se dá ošetřit tím, že se převede do desítkové soustavy, ne?
toString(10) |
||
Leo Profil |
#12 · Zasláno: 30. 7. 2005, 12:58:33 · Upravil/a: Leo
Da a neda (po konverzi vam vznikne cislo, a isNaN vrati false, i kdyz uzivatel napise neco, co cislo v desitkove soustave neni), existuji i jine zpusoby, napr parseInt, parseFloat, atd. Leo
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0