Autor Zpráva
Kvilda
Profil
Mám hotový formulář a potřebuji k němu udělat co nejjednodušeji kontrolu, jestli nechybí vyplněná kolonka
nemáte někdo typ
peta
Profil *
http://peter-mlich.wz.cz/x/rs0/objednvka.html
Oswald
Profil
Kvilda
Minimální typická kontrola:


// 1. - funkce, která zkontroluje formulář:

function kontrolaFormulare() {
// zkontrolujeme, zda je vyplnene policko s name=jmeno
if (this.jmeno.value == '') {
// je prazdne - upozornenie uzivatele
alert('Jméno je povinné');
// zruseni odeslani
return false;
}
}

// 2. - inicializace:

// formular se bude hledat az po nacteni stranky
window.onload = function() {
// pokusime se najit formular podle id
var formular = document.getElementById('mujFormular');
if (formular) {
// form nalezen, po odeslani se zavola funkce kontrolaFormulare, uvnitr ni
// se this odkazuje na formular, takze this.jmeno ukazuje na policko s name=jmeno
// uvnitr tohoto formulare
formular.onsubmit = kontrolaFormulare;
}
}



<form action="" id="mujFormular">
<input name="jmeno" />
</form>



(Psáno z hlavy, za funkčnost neručíme, na ukázaný princip je záruka 3 měsíce *)
Tomik
Profil
Oswald
Nebylo by IMHO lepší rovnou tomu formu nastavit onSubmit = "kontrolaFormulare(this);"
a podle toho upravit tu fci?
Tomik
Profil
Ehm.. tak ještě jednou a celé:
(takhle to řeším já)

JS soubor na který odkazuji v souboru, kde je umístěn formulář:
// Definovani regulerniho vyrazu pro kontrolu emailove adresy
reg = "/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$";

// Kontroluje, zda jsou vyplněny veškeré povinné položky formuláře + kontroluje jejich správnost
function checkform(form) {

// kontrola jmena
if (form.jmeno.value == "") {
form.jmeno.focus();
alert ("Chyba!\nProsím, vyplňte vaše jméno!");
return false;
}

// kontrola prijmeni
if (form.prijmeni.value == "") {
form.prijmeni.focus();
alert ("Chyba!\nProsím, vyplňte vaše příjmení!");
return false;
}

// kontrola zda je zadan mail
if (form.email.value == "") {
form.email.focus();
alert ("Chyba!\nProsím, vyplňte váš e-mail!");
return false;
}

// kontrola zda je zadan telefon spravne (pokud je zadan)
if (form.telefon.value != "") {
if (form.telefon.value.length != 9) {
form.email.focus();
alert ("Chyba!\nVámi zadaný email nemá dostatek číslic nebo má špatný formát!");
return false;
}
}

// kontrola spravnosti emailu
if (!form.email.value.match(reg)) {
form.email.focus();
alert ("Chyba!\nVámi zadaný email má špatný formát!");
return false;
}

// kontrola zda je zadan text zpravy
if (form.text.value == "") {
form.text.focus();
alert ("Prosím, zadejte text zprávy!");
return false;
}

return true;
}

Definice formuláře unitř dokumentu html:
<form action="mail.php" method="post" onsubmit="return checkform(this);">
<fieldset>
<legend>Osobní údaje</legend>
<p>
<label>Jméno: </label for="jmeno"><input type="text" id="jmeno" name="jmeno" tabindex="1" /> <span class="povinne">(*)</span><br />
<label>Příjmení: </label for="prijmeni"><input type="text" name="prijmeni" tabindex="2" /> <span class="povinne">(*)</span><br />
<label>Email: </label for="email"><input type="text" name="email" tabindex="3" /> <span class="povinne">(*)</span><br />
<label>Telefon (např.: 123456789):</label for="telefon"><input type="text" name="telefon" maxlength="9" tabindex="4" /> <span class="nepovinne"></span><br /><br />
Údaje označené <span class="povinne">(*)</span> jsou povinné a je třeba je vyplnit.
</p>
</fieldset>
<br />
<fieldset>
<legend>Zpráva</legend>
<p>Text zprávy: <span class="povinne">(*)</span></p>
<p>
<textarea name="text" cols="40" rows="6" tabindex="5"></textarea>
</p>
</fieldset>
<p>
<input type="submit" name="odeslano" value="Odeslat vzkaz z kontaktního formuláře" tabindex="6" />
</p>
</form>

Oswald
Profil
Tomik
Nebylo by IMHO lepší rovnou tomu formu nastavit onSubmit = "kontrolaFormulare(this);"

Je to další z možností, já preferuju ten způsob, jak jsem to napsal v předchozím příspěvku. Nemíchá se tak HTML s JS.

takhle to řeším já

Bylo by dobré, doplnit si tam tu chybějící závorku :-)


if (!form.email.value.match("^.+@.+\..+$")) {


UPDATE: A vůbec je tahle konstrukce dost divná, čekal bych tam spíš regExp: /^.+@.+\..+$/
UPDATE2: aha :-)
Tomik
Profil
Oswald
Jj, teď jsem si toho všiml, už je tam dopněna, IMHO jsem to možná stih ještě před tím, než jsi to napsal ty... :D
Tomik
Profil
OT: peta
Ty mě vždycky rozesměješ. :)
Co to má být? Mě to normálně pustí dál, ať nic nevylpním, ať vyplním kdejaké ptákoviny.

Mě připadá minimálně zvláštní, že skoro u každého problému odkazuješ na svoje stránky (nic proti nim),
leskdy věak nenabízí řešení toho určitého problému.
Toto téma je uzamčeno. Odpověď nelze zaslat.