Autor | Zpráva | ||
---|---|---|---|
petulienka Profil * |
Mám pomocí javascriptu takovou funkci
function onlyNumbers(e) { var keynum; var keychar; var numcheck; if(window.event) // IE { keynum = e.keyCode; } else if(e.which) // Netscape/Firefox/Opera { keynum = e.which; } keychar = String.fromCharCode(keynum); numcheck = /[\d\x00-\x1F\x7F]/; //prijma pouze cisla + specialni znaky typu backspace, delete a sipky return numcheck.test(keychar); } Funkce by měla hlídat, aby se do inputu zadávali pouze číslice. Takhle ji na inputu volám <input type="text" value="" id="mojeid" name="moje" onkeypress="return onlyNumbers(event)" /> V IE všechno v pohodě, můžu tam vkládat z klávesnice, vkládat pomocí Ctrl+V, ale do FF můžu zadávat pouze ručně, anebo kliknout pravým tlačítkem myši a dát Vložit, nejde použít Ctrl+V. Tuší někdo prosím proč? Moderátor Chamurappi: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
fajzen Profil |
#2 · Zasláno: 18. 11. 2009, 20:11:23 · Upravil/a: fajzen
Pretože aj stlačenie Ctrl+V vyvolá udalosť keypress a keďže Ctrl ani V nie sú čísla, akcia sa zruší... V IE je asi iné poradie vloženia a vyvolania udalosti, preto je to možné...
Kontrola na číslice by sa dala spraviť aj oveľa jednoduchšie (aj keď možno nie tak elegantne :) ): function onlyNumbers(el) { if(el.value != '-') el.value = parseInt(el.value, 10) || '' } a volanie: <input type="text" value="" id="mojeid" name="moje" onkeyup="onlyNumbers(this);" /> // Edit: zabudol som ošetriť záporné čísla (keď je prvý a jediný znak '-' (mínus) // Edit2: takto pôjdu zadávať iba celé čísla... pre desatinné čísla by to presa len chcelo nejaké zložitejšie riešenie |
||
Chamurappi Profil |
#3 · Zasláno: 18. 11. 2009, 21:05:22
Reaguji na petulienku:
„Tuší někdo prosím proč?“ Proto, že Ctrl+V není číslo. Musíš opodmínkovat tuto situci. V e.ctrlKey najdeš true, pokud je stisknutý Ctrl. Reaguji na fajzena: To mi připadá na první pohled jako nepoužitelné řešení — co to udělá při přenastavení value s pozicí kurzoru? Zkoušels to? |
||
fajzen Profil |
#4 · Zasláno: 18. 11. 2009, 23:21:06
Chamurappi:
„co to udělá při přenastavení value s pozicí kurzoru? Zkoušels to?“ Priznám sa, že nad týmto som predtým naozaj nerozmýšľal... Ale po tvojej otázke som to otestoval (IE8, FF3.5, Opera 10) a myslím, že to obstálo- kurzor zostane v inpute na konci |
||
Časová prodleva: 14 let
|
0