Autor Zpráva
Suta
Profil
Trvalo mi hodinu, než jsem dokázal zprovoznit kód tak, aby mi fungoval, nicméně je to obejité řešení.
Nechápu, proč mi nefunguje v této podobě: (doporučuju spíše než pečlivě hledat ve scriptu chybičku přečíst si závěr mého dotazu, myslím, že chyba je v nějaké mě neznámé logice :)


<SCRIPT LANGUAGE="JavaScript"><!--

function zkontroluj(formular)
{
if (formular.web.value!="")
{
re = new RegExp("^(www\.|http:\/\/|www.http:\/\/).*\..*$");
if (!re.test(formular.web.value))
{
alert("Adresa www stránek nebyla zadána správně!");
formular.web.focus();
return false;
}
}

else if (formular.email.value!="")
{
if (window.RegExp)
{
re = new RegExp("^[^.]+(\.[^.]+)*@([^.]+[.])+[a-z]{2,3}$");
if (!re.test(formular.email.value))
{
alert("Zadaná adresa není správnou adresou elektronické pošty!");
formular.email.focus();
return false;
}
}
}
else
return true;
}
// -->
</SCRIPT>


Jedná se o toto:
1. ve scriptu jsou dvě podmínky: první testuje správnost www adresy (je-li zadána), druhá e-mailové adresy
2. chování výše uvedeného scriptu je následující:
- nechám-li otestovat pouze www a část kódu pro kontrolu e-mailové adresy smažu, funguje
- nechám-li otestovat pouze e-mail a část kódu pro kontrolu www adresy smažu, funguje
- pokud obě části spojím pomocí podnímky else if, funguje vždy pouze první část, druhá je ignorována

Proč ?

(kód jsem nakonec obešel tím, že jsem místo podmínky else if použil prosté if, čímž kontroluje www i e-mail samostatně a pak to funguje, nicméně mi vůůůůbec není jasné, proč to nejede s else-if)

Díky za pomoc.
Marty
Profil
Doporučuji část pro kontrolu emailu uzavřít taktéž do závorek ( else { if (formular.email.value!="") atd.).

Jinak si zkus skript otestovat ve FF a podívat se do JS konzole, zda tam máš nějakou chybu.
Anonymní
Profil *
Fajn, díky Marty, je to taky řešení, podobné "obejití" jako použití dvou if za sebou, ale pořád nechápu proč to nejde spojit pomocí else if, když to samostatně funguje a else if je "a nebo"... :)

Jinak se tím už nikdo trápit nemusí, kašlu na to.
Suta
Profil
Anonymní jsem byl já, ještě to tady nikdo neošetřil, tak to musím stále testovat :)
Toto téma je uzamčeno. Odpověď nelze zaslat.