Autor Zpráva
T-fon
Profil
Prosil bych o radu s tímto problémem. Už jsem přečet všechny příspěvky na toto téma, bohužel mi stále kontrola checkboxu nefunguje.
Mám toto formulářové pole:
<form action="" method="post" onSubmit="return validace(this)">
....
<td><input type="checkbox" id="souhlas" name="souhlas"><label for="souhlas">Souhlas se <a id="zpracovani" href="zpracovani.php">zpracováním údajů</a></label></td>
A dále javascriptovou funkci, která mi kontroluje formulář:
function validace(formular){
      if(formular.jmeno.value == ""){
        window.alert("Nevyplnili jste jméno.\nNapište prosím své jméno.");
        formular.jmeno.focus();
        return false;
      }
      .....
      
toto normálně funguje
a dále ten checkbox:
else if(!formular.souhlas.checked) { 
        window.alert("Je vyžadován souhlas se zpracováním údajů!");         
        return false;
        }
ten nefunguje ani když použiju toto
else if(!formular.getElementById("souhlas")

Nenapadá vá něco, kde můžu mít chybu?
user243
Profil
použij podmínku:
document.getElementById('souhlas').checked != true
nebo
formular.souhlas.checked != true
Tori
Profil
T-fon:
Ve kterých prohlížečích se chyba projevuje, všude nebo některé jsou ok? Co přesně obsahuje formular.souhlas (když to např. vypíšete do konzole)?
Chamurappi
Profil
Reaguji na usera243:
Proč? Co se tím změní? Jeho zápis musí fungovat úplně stejně.


Reaguji na T-fona:
V uvedeném kódu chybu nevidím. Prosím o odkaz na živou ukázku.
user243
Profil
na mém zkušebním formuláři mnou uvedená podmínka fungovala
Chamurappi
Profil
Reaguji na usera243:
A ta jeho snad ne?
user243
Profil
dík za smazání; máš pravdu, jeho funguje; nenapadlo mě to vyzkoušet, když píše, že mu nefunguje;
T-fon
Profil
http://www.t-bajk.euweb.cz/readers/index.php
Tady je to umístěné, zkusil jsem to změnit jak napsal user243 a stále nic. Zkoušel jsem to v Mozile, IE a Chrome.
Chamurappi
Profil
Reaguji na T-fona:
Chyba je tady:
      else if(window.RegExp){
        re = new RegExp("^.+@.+(\..+)+$");
        if (!re.test(formular.email.value)) {
          window.alert("Neplatný e-mail!");
          formular.email.focus();
          return false;
        }
        else
          return true;
      }
      else if(document.getElementById('souhlas').checked != true) { 
        window.alert("Je vyžadován souhlas se zpracováním údajů!");         
        return false; 
      } 
Pokud prohlížeč zná window.RegExp (což je mimochodem docela zbytečná podmínka), tak už nemá důvod ten poslední else if vykonat.
T-fon
Profil
Chamurappi:
díky, takže vlastně stačí ty podmínky přehodit a mělo by to fungovat, ne?ještě jsem našel něco podobného, trochu jsem si to upravil:
if (/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(formular.email.value) == false) {
      window.alert("Neplatný e-mail!");
      formular.email.focus();
      return false;
}
Chamurappi
Profil
Reaguji na T-fona:
jsem našel něco podobného
Ještě zahoď ten nový přísný regulární výraz a dej si místo něj ten přechozí. Nebo máš nějaký důvod k omezení top-level domény u e-mailu na 2 až 4 znaky?

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: