Autor Zpráva
dutej_kedluben
Profil
Zdravim,
už hodinu tu bojuju s JS, ktery mi ma overit pole ve formulari .. po tom co jsem pridal dva regulerni vyrazny na masku pole, mi to z části nefunguje , Provede se prvni regulerni vyraz, ale pak se co cele nahle ukonci a formular se odesle (pri tom tam je jeste druhy vyraz a dalsi polozky na kontrolu) ...
Sekne se to za cislokaroserie3 (pak jako by JS dal nepokracovalo).

Nevite kde je tam chyba, že to už neoveruje cislokaroserie4 a dalsi polozky ?

<SCRIPT LANGUAGE="JavaScript">
function zkontroluj(formular)
{
if (formular.trida.value=="")
{
alert("Zvolte třídu vozu.");
formular.trida.focus();
return false;
}
else if (formular.typ.value=="")
{
alert("Zvolte typ vozu.");
formular.typ.focus();
return false;
}
else if (formular.model.value=="")
{
alert("Zadejte model Vašeho vozu.");
formular.model.focus();
return false;
}
else if (formular.cislokaroserie2.value=="")
{
alert("Vyplňte číslo karoserie.");
formular.cislokaroserie2.focus();
return false;
}

else if (formular.cislokaroserie3.value=="")
{
alert("Vyplňte číslo karoserie.");
formular.cislokaroserie3.focus();
return false;
}

else if (window.RegExp)
{
re = new RegExp("^[0-9]{1}+[a-z]{1}$");
if (!re.test(formular.cislokaroserie3.value))
{
alert("Zadané číslo karoserie není správně vyplněno!");
formular.cislokaroserie3.focus();
return false;
}
}


else if (formular.cislokaroserie4.value=="")
{
alert("Vaše PSČ musíte vyplnit!");
formular.cislokaroserie4.focus();
return false;
}
else if (window.RegExp)
{
re = new RegExp("^[0-9]{5}$");
if (!re.test(formular.cislokaroserie4.value))
{
alert("Zadané PSČ není správně vyplněno!");
formular.cislokaroserie4.focus();
return false;
}
}
else if (formular.kmdnes.value=="")
{
alert("Vyplňte stav tachometru k dnešnímu dni.");
formular.kmdnes.focus();
return false;
}
else if (formular.kmservis.value=="")
{
alert("Vyplnte stav km, kdy jste měli poslední servis");
formular.kmservis.focus();
return false;
}
else if (formular.denservis.value=="")
{
alert("Zadejte datum posledního servisu");
formular.denservis.focus();
return false;
}
else if (formular.osoba.value=="")
{
alert("Uveďte prosím kontaktní osobu - objednavatele pojištění.");
formular.osoba.focus();
return false;
}
else if (formular.ulice.value=="")
{
alert("Uveďte prosím ulici - adresu na kterou Vám budou podklady zaslány.");
formular.ulice.focus();
return false;
}
else if (formular.mesto.value=="")
{
alert("Uveďte prosím město - adresu na kterou Vám budou podklady zaslány.");
formular.mesto.focus();
return false;
}
else if (formular.psc.value=="")
{
alert("Uveďte prosím poštovní směrovací číslo - adresu na kterou Vám budou podklady zaslány.");
formular.psc.focus();
return false;
}
else
return true;
}
</SCRIPT>
splite
Profil
Máš v tom pěknej bordel... Vůbec se ten script nedá číst...

Možná by jsi nám, technicky neznalým mohl napsat jak má takové číslo karoserie vypadat :-)

Jenom jak na to koukám tak pokud ti if(window.RegExp) vrátí false, tak samo o sobě nemáš žádné else...

A vůbec jsi si jistej že ty výrazy máš správně?

http://www.regular-expressions.info/javascriptexample.html
los
Profil *
Keď ti vráti test na window.RegExp true, tak kontroluješ už len podobnosť na výraz a ak to cezeň prejde, tak končíš.
	else if (window.RegExp)

{
re = new RegExp("^[0-9]{5}$");
if (!re.test(formular.cislokaroserie4.value))
{
alert("Zadané PSČ není správně vyplněno!");
formular.cislokaroserie4.focus();
return false;
}
// tu skoncis (logicky)
}


Čo tak to zapísať jednoduchšie?
function zkontroluj(formular) {

var povinne = {
trida: "Zvolte třídu vozu.",
typ: "Zvolte typ vozu.",
model: "Zadejte model Vašeho vozu.",
cislokaroserie2: "Vyplňte číslo karoserie.",
cislokaroserie3: "Vyplňte číslo karoserie.",
cislokaroserie4: "Vaše PSČ musíte vyplnit!",
kmdnes: "Vyplňte stav tachometru k dnešnímu dni.",
kmservis: "Vyplnte stav km, kdy jste měli poslední servis",
denservis: "Zadejte datum posledního servisu",
osoba: "Uveďte prosím kontaktní osobu - objednavatele pojištění.",
ulice: "Uveďte prosím ulici - adresu na kterou Vám budou podklady zaslány.",
mesto: "Uveďte prosím město - adresu na kterou Vám budou podklady zaslány.",
psc: "Uveďte prosím poštovní směrovací číslo - adresu na kterou Vám budou podklady zaslány."
};

var vyrazy = {
cislokaroserie3: [/^[0-9]+[a-z]$/, "Zadané číslo karoserie není správně vyplněno!"],
cislokaroserie4: [/^[0-9]{5}$/, "Zadané PSČ není správně vyplněno!"]
};

for (name in povinne)
if (!formular[name].value) {
alert(povinne[name]);
formular[name].focus();
return false;
} else if (vyrazy[name] && !vyrazy[name][0].test(formular[name].value)) {
alert(vyrazy[name][1]);
formular[name].focus();
return false;
}

return true;
}
dutej_kedluben
Profil
los

Velmi moc ti dekuju, fakt tvuj zapis je prehledny a hlavne to funguje, jak ma! Já bohužel moc JS nepobral jen zaklady , tak jsem nad tim prosedel dopoledne strasne mooc casu a nic z toho nebylo :(
Jeste jednou moc dik za pomoc.

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:

0