Autor Zpráva
prejezd
Profil
Zdravím.

Splácal jsem dohromady nějakou kontrolu formulářů, aby mi tam vyskakovali okénka o tom co vyplňuji špatně. Je to asi v této podobě.

overeni.php
function kprazdny($pole) {
  if(!$pole) return "<span class='red'>Toto pole musíte vyplnit! </span>";
  if($pole) return "<span class='green'>Pole je vyplněné správně.</span>";
}
echo kprazdny($_REQUEST['pole']);


formular.php
function kprazdny(pole, ksloupec) {
  http.abort();
  http.open("GET", "overeni.php?pole=" + pole, true);
  http.onreadystatechange=function() {
    if(http.readyState == 4) {
      document.getElementById(ksloupec).innerHTML = http.responseText;
    }
  }
  http.send(null);
}

<form action="neco.php">
<input type='text' name='pole' onkeyup="kprazdny(this.value, 'neco')" />
<div id='neco'></div>
<input type='submit' value='Uložit'>
</form>


Tak tahle to asi nějak je. A můj problém spočívá v tom, že mi tam sice vyskakuje hláška o tom jestli je pole vyplněné nebo není, ale když kliknu na uložit, tak tak se mi to odešle ať je to vyplněné nebo ne.

Napadá někoho jak zajistit, aby to nešlo odeslat, když to pole nevyplním, ale aby to nějak vycházelo už z té mojí kontroly. Předpokládám, že nezůstanu jen u jednoho pole, ale ve formuláři jich bude třeba 10 a všechny budou muset být řádně vyplněny.

Děkuji za každý návrh.
perun
Profil
Naviazať kontrolu na udalosť odoslania formulára:

<form action="..." method="..." onsubmit='return kontrolaVyplneniaPoli(this.form);' >


Ak funkcia kontrolaVyplneniaPoli() vrati true, formular sa odosle. Ak vrati false, tak nie.
prejezd
Profil
Já nechci kontrolovat jen jestli to pole něco obsahuje, ale třeba i jestli je to číslo, email atd. POtřebuju aby to zkotrolova všechny podmínky.
perun
Profil
No tak si na udalosť onsubmit skontroluj aj to, či sú hodnoty platné. Ak nechceš formulár odosielať, tak onsubmit je (afaik) jediné miesto, kde tomu zabrániť.

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: