Autor | Zpráva | ||
---|---|---|---|
karel_ Profil * |
#1 · Zasláno: 4. 8. 2011, 11:22:13
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; } 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 |
#2 · Zasláno: 4. 8. 2011, 11:39:33 · Upravil/a: Witiko
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 + "]"] */ } form["answers[" + i + "]"] , tzn. pokud nemáš v číslování mezery, tak projde všechny elementy.
|
||
Chamurappi Profil |
#3 · Zasláno: 4. 8. 2011, 11:41:37
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 * |
#4 · Zasláno: 4. 8. 2011, 12:11:36
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); 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 * |
#5 · Zasláno: 4. 8. 2011, 12:19:03
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 |
#6 · Zasláno: 4. 8. 2011, 12:29:35
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 * |
#7 · Zasláno: 4. 8. 2011, 13:13:24
Witiko: moc díky, funguje.
|
||
Časová prodleva: 13 let
|
0