Autor Zpráva
Vinny.PCE.88
Profil *
Ahoj... vím, že toho tady je hodně a podle toho jsem to taky udělal, ale musím mít v kódu nějaký nesmysl, protože mi to neověřuje všechna pole, ale jenom první...

Mám kód:
<head>  
    <meta http-equiv="content-type" content="text/html; charset=utf-8">  
    <meta name="generator" content="PSPad editor, www.pspad.com">;  
    <title>
    </title>  
    <script language="JavaScript">
  function kontrola(){ 
	 if (document.f.mobile.value == "") {
document.f.mobile.focus();
alert ("Nezadali jste váš telefon!");
}  
        else if (document.f.dbfield-note.value == "") {
document.f.dbfield-note.focus();
alert ("Nezadali jste poznámku");
}
}
</script>
  </head>  
  <body>  
    <table>
      <form action="pokus.php" name="f" method="POST" onSubmit="return kontrola();">

Telefon: <input type="text_area" name="mobile" size="60"/><br>
Poznámka: <textarea name="dbfield-note" rows="5" cols="46"></textarea><br>
<input class="button" type="submit" value="Odeslat" />
        
      </form>
    </table> 
     
  </body>


Výsledkem je, že mi to zkontroluje to, zda je vyplněný telefon... ale na poznámku to nebere žádný ohled, již jsem zkoušel mnoho modifikací, ale nefunguje to? Nevímte někdo, kde by mohla být chyba? Určitě to bude něco stupidního, ale já na to prostě nemůžu přijít... je mi záhadou, že to jde jen na ten mobile a už ne na ten druhej.

Za každou radu díky.

Lukáš
YoSarin
Profil
Úplně nejjednodušší bude, když textaree i inputu kromě name dáš i unikátní ID a přistupovat k nim potom budeš přes to ID:
<head>  
    <meta http-equiv="content-type" content="text/html; charset=utf-8">  
    <meta name="generator" content="PSPad editor, www.pspad.com">;  
    <title>
    </title>  
    <script language="text/javascript">
    function kontrola(){ 
        if (document.getElementById('mobile').value == "") {
            document.getElementById('mobile').focus();
            alert ("Nezadali jste svůj telefon!");
        } else if (document.getElementById('dbfield-note').value == "") {
            document.getElementById('dbfield-note').focus();
            alert ("Nezadali jste poznámku");
        }
        return false;
    }
</script>
  </head>  
  <body>  
    <table>
      <form action="pokus.php" name="f" method="POST" onSubmit="return kontrola();">

            Telefon: <input type="text_area" name="mobile" id="mobile" size="60"/><br>
            Poznámka: <textarea name="dbfield-note" id="dbfield-note" rows="5" cols="46"></textarea><br>
            <input class="button" type="submit" value="Odeslat" />
      
      </form>
    </table> 
     
  </body>
Další možnost je jít na to přes třídu a za použití nějakého frameworku:
  // ukázka JS pro ověření pomocí JQuery
  // při odeslání formuláče v něm najde všechny .required položky a pokud jsou prázdné, tak je červeně podkreslí a neumožní odeslání formuláře
  // bude mít asi problémy s checkboxy a radiobuttony, a to ok taky možná nebude uplně košer - to je tak když to člověk píše narychlo :)
  $(document).ready(function() {
      $('form').submit(function() { // tohle nastaví všem formulářům na stránce následující funkci jako onSubmit
          var ok = true;
          $(this).find('.required').each(function() {
              if ($(this).val() == '') {
                  $(this).css('background-color', '#ffcccc');
                  ok = false;
              }
          });
          return ok;
      });
  });
  
Chamurappi
Profil
Reaguji na Vinnyho.PCE.88:
document.f.dbfield-note.value
Tohle je odčítání note.value od document.f.dbfield. Pokud neexistuje proměnná note, skončí to chybou.
Viz Dvojí přístup ke členu (vlastnosti/metodě) objektu.


Reaguji na YoSarina:
Úplně nejjednodušší bude, když textaree i inputu kromě name dáš i unikátní ID
Nebude. V přístupu podle name není žádný problém.
Než nabídneš naprosto jiné řešení, měl bys identifikovat příčinu, proč nejde to staré a zvážit, zda ji nejde triviálním způsobem opravit.
Vinny.PCE.88
Profil *
Ok, tak teď na to koukám a zkusil jsem teda dát name místo dbfield-note na dbfieldnote a jede to... netušil jsem, že by mohl být problém v tomto... Takže již to funguje.. díky moc...
YoSarin
Profil
Chamurappi:
Příčinu jsem odhalit zkoušel, ale bůhvíproč mi to nefungovalo ani s odstraněním té pomlčky, tak jsem hledal jiné řešení. A jak vidíš, tak s přístupem přes name problémy jsou :)

Edit: pardon, reagoval jsem na špatnou osobu :)

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: