Autor Zpráva
Anonymní
Profil *
Ahoj, potrebovala bych do formulare pridat kontrolu jednoho imputu. Obsah imputu by mel byt prave devitimistne cislo. slozila jsem regularni vyraz /^[0-9]{9}$/ Myslim ze je dobre, ale nevim jak to pouzit v javascriptu. Nevite nekdo?
los
Profil *
Napr. najjednoduchšie:
<input type="text" onchange="if(!/^\d{9}$/.test(this.value)) alert('nespravny format')" />


Trochu zložitejšie, ale lepšie oddelené správanie od obsahu:
JavaScript:
window.onload = function ()

{
var inputs = document.getElementsByTagName ("input");

var validations =
{
numbers9: function (text)
{
return !/^\d{9}$/.test (text)?
"Musíte zadať 9-miestne číslo.":
false;
}
};

var validate = function ()
{
var t = this;
var validation = validations [this.className.substr (this.className.indexOf ("-") + 1)];
var text;

if (validation && (text = validation (this.value)))
{
alert (text);
setTimeout (function () {t.focus()}, 0);
}
};

for (var i = 0; i < inputs.length; ++i)
if (inputs [i].type == "text" && /(^|\s)validate\-/.test (inputs [i].className))
inputs [i].onchange = validate;
}

HTML:
<input type="text" class="validate-numbers9" />
Anonymní
Profil *
diiikyyyy:-)))
peta
Profil *
http://www.volny.cz/peter.mlich/www.htm#mssub17
jakpsatweb - javascript - priklady - reg vyraz
Anonymní
Profil *
hm tak jsem zjistila ze vyse uvedena funkce sice zarve, kdyz opustim policko, ale formular se odesle potom, co odbouchnu alert. :-( takze to nefunguje tak jak ma. Nema nekdo jinou radu?
los
Profil *
Hm, pôvodná otázka sa týkala iba toho, ako použiť regulárny výraz na kontrolu inputu. O odosielaní nebola reč.

Ak chceš zabrániť odoslaniu formulára, musí obslužná funkcia udalosti submit formulára vrátiť ako návratovú hodnotu false. Takže zvaliduješ input a na základe výsledku vrátiš true alebo false.

Napr.
jednoduchšie:
<form action="" method="get" onsubmit="if(!/^\d{9}$/.test(a.value)){alert('nespravny format');return false}">

<p>
<input name="a" type="text" />
<input type="submit" />
</p>
</form>


zložitejšie:
JavaScript:
window.onload = function ()

{
var validations =
{
numbers9: function (text)
{
return !/^\d{9}$/.test (text)?
"Musíte zadať 9-miestne číslo.":
false;
}
};

var validate = function ()
{
var inputs = this.getElementsByTagName ("input");
var input, validation, text;

for (var i = 0; input = inputs [i]; ++i)
if (input.type == "text" &&
/(^|\s)validate\-/.test (input.className) &&
(validation = validations [input.className.substr (input.className.indexOf ("-") + 1)]) &&
(text = validation (input.value)))
{
alert (text);
setTimeout (function () {input.focus()}, 0);
return false;
}

return true;
};

for (var i = 0; i < document.forms.length; ++i)
document.forms [i].onsubmit = validate;
}


HTML:
<form action="" method="get">

<p>
<input name="a" type="text" class="validate-numbers9" />
<input type="submit" />
</p>
</form>
los
Profil *
Pre istotu: Dúfam, že je jasné, že validácia na strane klienta nezaručí to, že server dostane vždy len validné údaje. Napr. ak si niekto vypne JavaScript, bude môcť poslať hocičo.
Anonymní
Profil *
to je fakt:-) dekuji, ted uz to funguje jak ma...
Toto téma je uzamčeno. Odpověď nelze zaslat.