Autor Zpráva
Yeti
Profil *
Ahoj, potřboval bych poradit:
ve formuláři kontroluji zdali uživatel zadává pouze čísla do určitých inputů mám na to tuhle funkci:

function validate(evt) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]|\./;
  if( !regex.test(key) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}
a v HTML pak mám tohle:
<input type="text" name="jen_cisla" onkeypress="validate(event);" maxlength="10" placeholder="0123456789">

funguje to skvěle, uživatel tam prostě jinou věc než číslo nezadá, ale já bych to potřeboval doplnit o nějaké znaky, aby mohl používat backspace, delete šipky, tab, prostě věci co normálně používáte v inputech a nevím jak na to :(

Dík za váš čas :)
Fisir
Profil
Reaguji na Yetiho [#1]:
Nekontroluj klávesové eventy, ale value.
Yeti
Profil *
o jo, ale to tam pak pujdou zadat písmena a až pak ti to oznámí že tam muzes davat jen cisla, ja chci aby tam ty písmena nešli zadat vůbec


sorry, už mi to došlo :D
ale nenapadá mě jak to upravit tak aby to počítalo s value a ne event :( mohl by jsi mi sem porsím hodit kod nebo napsat jak na to?

dík moc :)
1Pupik1989
Profil
Ve funkci test() bude místo kez evt.target.value nebo this.value. Momentálně si nevzpomenu jestli to druhé jde. První mám pocit nejde v ie, tam je to this.srcElement.

Opravte mě někdo, pokud se pletu, teď nemám přístup k pc.
_es
Profil
1Pupik1989:
Ve funkci test() bude místo...
Pri priradení udalosti ako v [#1] nebude this objekt inputu.

Yeti:
Hodnota sa dá do inputu vložiť rôznym spôsobom, nie len stlačením klávesy klávesnice.
peta
Profil
Tak ty eventy se daji resit i takhle
function getKeyBoard(event)
{
return {
    key: event.keyCode || event.which,
    el: event.srcElement || event.target    //event.relatedTarget || event.fromElement;
    };
}

function validate(event)
var kbd, key;
kbd = getKeyBoard(event);
key = kbd.key;
...

Yeti: Jenze key-eventy vubec nemusis resit, jak psal Fisir, pouzij value.
onkeyup="this.value=this.value.replace(/[^0-9\.]/,'');"
onblur="this.value=this.value.replace(/[^0-9\.]/,'');"
edit: Jo, jeste se musi zmenit podminky pro regexp
1Pupik1989
Profil
do onkeypress bych dal "validate(this)". To jsem přehlédl. Pak by to bylo "evt.value".

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: