Autor Zpráva
karel_
Profil *
Ahoj,
prosím o nápovědu, příklad nebo nakopnutí "správným směrem" (správným titulkem ^ si nejsem jist):
Řeším jednoduchou validaci - zvolení nebo vyplnění hodnoty ve formuláři, a nevím jak v JS zapsat v HTML použitý: name="answers[1]"

JS:
	function validation()
	{
    var x=document.forms["test"]["answers[1]"].value        /* "answers[1]" je pravděpodobně špatně */
    alert(x); 
    if (x==null || x=="")
      {
      alert("First name must be filled out");
      return false;
      }
    
(Čerpáno z w3schools)

Pochopitelně by bylo vhodnější projít celé pole ( name="answers[1]" třeba až name="answers[8]" ) ale to už bych případně řešil až v dalším levelu.
Witiko
Profil
karel:
Čerpáno z w3schools
To není vhodný referenční materiál.

"answers[1]" je pravděpodobně špatně
Špatně to není, ale takhle se pole serveru nepředávají. Pokud jde jenom o konvenci pojmenování, tak proč ne. Mělo by to fungovat. Procházení všech bych řešil nějak následovaně:
var form = document.forms["test"];
for(var i = 0; form["answers[" + i + "]"]; i++) {
  /* validace elementu form["answers[" + i + "]"] */
}
Cyklus poběží, dokud bude existovat form["answers[" + i + "]"], tzn. pokud nemáš v číslování mezery, tak projde všechny elementy.
Chamurappi
Profil
Reaguji na karla:
"answers[1]" je pravděpodobně špatně
Není.
Z hlediska HTML/DOMu netvoří formulářové prvky s podobným name pole, to z nich dělá až něco na straně serveru. Hranaté závorky nemají pro prohlížeč žádný význam.

(Čerpáno z w3schools)
V tomhle má ten web výjimečně pravdu, ale jinak ti doporučuji se mu obloukem vyhýbat.
karel_
Profil *
Díky za nasměrování (nejsem v JS moc "kovaný"), ale pokud není:
var x=document.forms["test"]["answers[1]"].value        /* "answers[1]" je pravděpodobně špatně */
alert(x); 
vysloveně špatně, v čem je chyba, že f-ce alert vypisuje "Undefined"?


Obdobně se chová i příklad:
	function validation()
	{
    var form = document.forms["test"];
    var x = form["answers[1]"].value;
    alert (x);
    return false;
    }
karel_
Profil *
ještě se doplním, a možná v radio bude právě problem (s jednim radio skript funguje): HTML:
<form onsubmit="return validation()" method="post" name="test">
<input type="radio" value="1" id="1" name="answers[1]"><label for="1">1</label>
<input type="radio" value="0" id="1" name="answers[1]"><label for="0">0</label>
<input type="submit" name="send" id="send" value="Dokončit">

</form>
Witiko
Profil
karel:
U druhého inputu máš špatně id. Jinak důvod nefunkčnosti je fakt, že máš více elementů se jménem answers[1], díky čemuž document.forms["test"]["answers[1]"] nenavrací samostatný element, ale jejich živé pole. Budeš tedy muset procházet přes jeho jednotlivé položky, tzn.:
var elementy = document.forms["test"]["answers[1]"];
for(var i = 0; elementy[i]; i++) {
  /* Zpracujeme elementy[i] */
}
karel_
Profil *
Witiko: moc díky, funguje.

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0