| 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: 15 let
|
|||
0