Autor Zpráva
Mufna
Profil
Zdravím Vás, už jste mi zde dnes pomohli vyřešit problém s externím *.js (moc díky), no nyní mám pro změnu tento. V externím *.js jsou validace 2 různých formulářů (oba jsou na různých podstránkách webu)

/* -- VALIDATE QUICKFORM -- */

function isset(name) {
return document.forms['quickform'].elements[name].value.length>0;
}

function validate_quickform() {
if (!isset('jmeno')) {window.alert('Zadejte prosím Vaše jméno');return false;}
if (!isset('telefon')) {window.alert('Zadejte prosím Vaše telefonní číslo');return false;}
if (!isset('email')) {window.alert('Zadejte prosím Vaši e-mailovou adresu');return false;}
if (!isset('zprava')) {window.alert('Co nám chcete sdělit ?');return false;}
return true;
}


/* -- VALIDATE DEMANDFORM -- */

function isset(name) {
return document.forms['demandform'].elements[name].value.length>0;
}

function validate_demandform() {
if (!isset('firma')) {window.alert('Zadejte prosím název Vaší firmy. Pokud jste OSVČ, zadejte Vaše jméno.');return false;}
if (!isset('jmeno')) {window.alert('Zadejte prosím Vaše jméno nebo jméno kontaktní osoby.');return false;}
if (!isset('telefon')) {window.alert('Zadejte prosím telefonický kontakt');return false;}
if (!isset('email')) {window.alert('Zadejte prosím e-mailovou adresu');return false;}
if (!isset('ulice')) {window.alert('Zadejte prosím ulici');return false;}
if (!isset('mesto')) {window.alert('Zadejte prosím město');return false;}
if (!isset('psc')) {window.alert('Zadejte prosím PSČ');return false;}
if (!isset('zprava')) {window.alert('V čem Vám můžeme pomoci ?');return false;}
return true;
}

V hlavičce obou stránek s formuláři je odkaz na *.js

<script src="javascript/scripts.js" type="text/javascript"></script>

V <body> pak je:

1. Stránka s 1. formulářem

<form name="quickform" action="quickform.php" method="post"
onsubmit="return validate_quickform()">

<input type="text" name="jmeno" style="width:160px" value=""></td>
<input type="text" name="telefon" style="width:160px" value=""></td>
<input type="text" name="email" style="width:160px" value=""></td>
<textarea name="zprava" cols="25" rows="3" style="width:220px"></textarea>
<input type="image" src="../images/send.jpg" border="0" alt="Odeslat formulář">

</form>


2. Stránka s 2. formulářem

<form name="demandform" action="demandform.php" method="post" style="margin:0px;padding:0px;border:0px" onsubmit="return validate_demandform()">

<input type="text" name="firma" size="39" style="width:290px" value="">
<input type="text" name="jmeno" size="39" style="width:290px" value="">
<input type="text" name="telefon" size="39" style="width:290px" maxlength="20" value="">
<input type="text" name="email" size="39" style="width:290px" value="">
<input type="text" name="ulice" size="39" style="width:290px" value="">
<input type="text" name="mesto" size="39" style="width:290px" value="">
<input type="text" name="psc" size="" style="width:100px" maxlength="6" value="">
<textarea name="zprava" cols="32" rows="11" style="width:290px"></textarea">
<input type="image" src="../images/send.jpg" width="59" height="26" alt="Odeslat formulář" border="0">
</form>

Validace vyplnění políček u DEMANDFORM probíhá naprosto v poho, naopak u QUICKFORM nic .... prohlížeč ho odešle s klidem úplně prázdný.

Ještě původně byl název funkce shodný u obou formulářů ... a "onsubmit" v tagu <form> byl též u obou shodný

function validate_form()
.....................................
onsubmit="return validate_form()"

I v tomto případě mi v poho probíhala validace u DEMANDFORM, u QUICKFORM nikoliv.

Myslel jsem si, že tím přejmenováním a odlišením názvu funkcí pro 2 různé formuláře to vyřeším, ale nestalo se ......

Můžete se na to prosím někdo mrknout ....
Leo
Profil
Protoze jste si predefinoval fci isset, Leo
Mufna
Profil
Hmm .... laicky mě tedy napadá nedělat jeden "univerzální" *.js soubor, ale rozdělit to kvůli tomuhle alespoň do dvou a ke každé stránce s formulářem pak připojit externě jiný *.js . To by mělo fungovat, nebo ne ? A i kdyby ano, nejde to udělat nějak elegantněji v tom jednom "univerzálním" *.js souboru pro všechny stránky ? Skripty opravdu nejsou moje parketa .....
los
Profil *
Mohol by si funkcii isset posielať v argumente formulár, ktorého vstupné polia má testovať, ale to už je potom jednoduchšie namiesto if (isset(form, name)) zapísať rovno if (form[name].value)...

Alebo môžeš mať napríklad jednu funkciu validate, ktorej budeš posielať formulár na zvalidovanie (onsubmit="return validate(this)").

Tá funkcia validate môže vyzerať napríklad takto:
function validate(form) {
var forms = {
"quickform": {
"jmeno": "Zadejte prosím Vaše jméno",
"telefon": "Zadejte prosím Vaše telefonní číslo",
"email": "Zadejte prosím Vaši e-mailovou adresu",
"zprava": "Co nám chcete sdělit?"
},
"demandform": {
"firma": "Zadejte prosím název Vaší firmy. Pokud jste OSVČ, zadejte Vaše jméno.",
"jmeno": "Zadejte prosím Vaše jméno nebo jméno kontaktní osoby.",
"telefon": "Zadejte prosím telefonický kontakt",
"email": "Zadejte prosím e-mailovou adresu",
"ulice": "Zadejte prosím ulici",
"mesto": "Zadejte prosím město",
"psc": "Zadejte prosím PSČ",
"zprava": "V čem Vám můžeme pomoci?"
}
}

for (var name in forms[form.name])
if (!form[name].value) {
alert(forms[form.name][name]);
return false;
}

return true;
}
Mufna
Profil
los

Díky, ta jedna fce validate se mi líbí, vyzkouším ....

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