Autor Zpráva
Question
Profil *
Zdárek! Napíšem tu skript ktorý mi kontroluje či boli zadané povinné hodnoty z formulára a ešte kontroluje správnosť emailovej adresy. Haluz je v tom, že nie je jedno, v akom poradí sú tie podmienky napísané, aj keď by to podľa malo byť jedno:


function spravnost(formular,randSES) {

if (formular.meno.value == '') {
alert('Je potrebné zadať vaše meno!');
formular.meno.focus();
return false;
}
else if (formular.prispevok.value == '') {
alert('Príspevok je prázdny!');
formular.prispevok.focus();
return false;
}
else if (formular.randNo.value != randSES) {
alert('Čísla sa nezhodujú!');
formular.randNo.focus();
return false;
}
else if (formular.email.value != '') {
if (formular.email.value != '@') {
if (window.RegExp) {
re = new RegExp('^[^-\.].+@.+\.[a-zA-Z]+$');
if (!re.test(formular.email.value)) {
alert('Zadaná elektronická adresa je neplatná!');
formular.email.focus();
return false;
}
}
}
}
else
return true;
}


Takto to funguje. Ale prečo to nefunguje, keď je podmienka 'randNo' (resp. celý ten blok else if) napísaná za 'email' ?? Keď je to totiž vymenené, vôbec nedochádza ku kontrole 'randNo' a formulár preklikne ďalej bez hlásenia alert(). Možno je tá podmienka 'email' moc zložito vetvená a skript potom ďalšie "else if" chápe inak ako by mal... neviem...
Question
Profil *
zjendotil som podmienku email na:


  else if ((formular.email.value != '') && (formular.email.value != '@')) {

if (window.RegExp) {
re = new RegExp('^[^-\.].+@.+\.[a-zA-Z]+$');
if (!re.test(formular.email.value)) {
alert('Zadaná elektronická adresa je neplatná!');
formular.email.focus();
return false;
}
}
}


a už to funguje
peta
Profil *
Question
http://mracek.xhosting.cz/chat/
var xFilter = new Array (
/*mail*/ "[A-Za-z0-9](?:(?:"+ mailsep +"?[a-zA-Z0-9]+)*)@"+ xDomain + xPort
);

var xDomain = "(?:(?:"+ xHost + "\\.[a-zA-Z]{2,9})|"+ ip +")";
var xPort = "(?:\\:[0-9]{2,4})?";
var mailsep = "[\\!#\\$%&\\'\\*\\+-\\/\\=\\?\\^_\\`\\{\\|\\}~]";
var linksep = "[_\\.-]";
var xHost = "[A-Za-z0-9](?:(?:"+ linksep +"?[a-zA-Z0-9]+)*)";

// RFC2821/RFC2822 e-mailAddress[64]@domainName[255]

reg = new RegExp(xFilter[i],"");
if (x = source.match(reg))


... ukaz link na spravny kod a na chybny kod. Takto je to kristalova koule. Ja, kdyz si to napisi, tak to napisi dobre.
nightfish
Profil
Haluz je v tom, že nie je jedno, v akom poradí sú tie podmienky napísané, aj keď by to podľa malo byť jedno
no, když použiješ if () else if ()..., tak je logické, že jakmile podmínka u jednoho z ifů projde, tak už se další nekontrolují
peta
Profil *
nightfish
dyz to tak pises, napada mne, jestli on take nezkopiruje cele else if :)
---
if {}
else if {}
else if {}
---
else if {}
if {}
else if {}
---
a pak se divi, ze mu to nejde. A co vypise JS konzola?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0