Autor Zpráva
mimochodec
Profil
Mám form, v něm input a submit. Před odesláním chci něco ověřit v databázi a když to neprojde, chci odeslání stornovat. Takto umístěný return false; ale nezafunguje, což docela chápu. Poradíte něco, co by fungovalo líp? Díky.

<form method='post' onclick='verify()'>



function verify() {

  var maj=document.getElementById("majitel").value; 
  var addr="ax.php?verifyjm="+maj; 

  xmlhttp=GetXmlHttpObject();
  if (xmlhttp==null) {
    alert ("Browser does not support HTTP Request");
    return;
  }

  xmlhttp.onreadystatechange=verifydone;
  xmlhttp.open("GET",addr,true);
  xmlhttp.send(null);
};


function verifydone() {

  if (xmlhttp.readyState==4) {
    var ret = (xmlhttp.responseText).trim();
    
  } else {

//    alert ("xx");
  }

  if (ret==0) {
    return false;
  }
}
Chamurappi
Profil
Reaguji na mimochodce:
Chytat onclick na <form>u je divné. Spíš onsubmit. Momentálně jednak verify nic nevrací a i kdyby vracel, nic to nezmůže, protože ve zpracování události také není return.

Před odesláním chci něco ověřit v databázi a když to neprojde, chci odeslání stornovat.
Špatný úhel pohledu. Chceš ho stornovat vždy, protože odpověď ze serveru dorazí později. V době dokončení zpracování události onsubmit ještě nemáš šanci vědět, co si o tom server myslí.
Takže vrátíš false vždy a až po přijetí odpovědi se rozhodneš, jestli formulář odešleš znovu.
mimochodec
Profil
Chamurappi:
Chytat onclick na <form>u je divné. Spíš onsubmit.

Ano, to byl překlep. Opraveno, díky.

Takže vrátíš false vždy

A toho dosáhnu jak? Zkusil jsem dát return false; na konec function verify() a vypadá to, že ani tam to nezafunguje. Napadá mě, že bych místo submitu dal button a použil ten onclick, ale i tak by mě zajímalo, co na tomhle dělám špatně.
Destiny_1
Profil
onsubmit="return verify()"
mimochodec
Profil
Destiny_1:
Bingo. Díky.

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: