Autor | Zpráva | ||
---|---|---|---|
states68 Profil * |
Ahoj,
chci zkontrolovat, zda byl při odesílání formuláře vybrán alespoň jeden prvek radio buttonu - nesmí se odeslat bez výběru. Našel jsem si takovýto skritpt (níže). Bohužel funguje jen když znám přesný počet radio buttonů. Když ale je tento počet pokaždé různý, tak to nefunguje. Chci jen jednoduchou kontrolu - zda bylo něco zaškrtnuto. A pokud ne, aby to zahlásilo alert. <form name="formular2"> <input type="radio" name="volba"><label>ano</label><br /> <input type="radio" name="volba"><label>ne</label><br /> <input type="radio" name="volba"><label>nevím</label><br /> <input type="button" onClick="overit2()" value="Bylo zaškrtnuto..."> </form> </fieldset> <script> function overit2(){ if (document.formular2.volba[0].checked) window.alert("ano"); else if(document.formular2.volba[1].checked) window.alert("ne"); else if(document.formular2.volba[2].checked) window.alert("nevim"); else window.alert("nebylo zaškrtnuto nic"); } </script> Moderátor Chamurappi: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
J. Profil * |
#2 · Zasláno: 22. 3. 2010, 13:58:00
Nebylo by jednodušší jeden z buttonů zaškrtnout defaultně?
|
||
blazej44800 Profil |
#3 · Zasláno: 22. 3. 2010, 14:03:37
skus to jednoducho urobit tak ze skontrolujes ci ta premenna formular2 sa dacomu rovna. ak je prazdna tak je jednoducho nic nezadane ...
<form name="formular2"> <input type="radio" name="volba"><label>ano</label><br /> <input type="radio" name="volba"><label>ne</label><br /> <input type="radio" name="volba"><label>nevím</label><br /> <input type="button" onClick="overit2()" value="Bylo zaškrtnuto..."> </form> </fieldset> |
||
states68 Profil * |
#4 · Zasláno: 22. 3. 2010, 14:26:38
J.:
bylo, ale jedná se o výběr fotografií (něco jako hlasování) a nechci někomu podsouvat jednu - tu první - fotku. Zatím to tak mám udělané, ale "jako na potvoru" vždy vyhraje právě ta první... |
||
Chamurappi Profil |
#5 · Zasláno: 22. 3. 2010, 14:27:48 · Upravil/a: Chamurappi
Reaguji na statese68:
Počet najdeš v document.formular2.volba.length .
Reaguji na blazeje44800: Nerozumím, co ses pokousil říct, ale jsem si skoro jistý, že to je špatně. |
||
states68 Profil * |
#6 · Zasláno: 22. 3. 2010, 14:29:07
blazej44800:
Bohužel se s formulářem s buttony odesílá i jedno textové pole. Zúžím svůj dotaz - tak jak navrhuješ prověřit jestli obsahuje formulář nějaká data, tak mi stačí, jestli není nějaký button zaškrtnutý. Díky za odpověď |
||
states68 Profil * |
#7 · Zasláno: 22. 3. 2010, 14:42:24
Chamurappi:
to bude asi ono - pokud je počet roven 0, pak by to mělo zahlásit, že není vybrána žádná volba... bohužel mi to nefunguje - jsem na javascript úplný mimoň <script> function overit2(){ if (document.formular2.volba.length==0) window.alert("nemáte zatrženo nic"); formular2.volba.focus(); return false; } </script> |
||
Chamurappi Profil |
#8 · Zasláno: 22. 3. 2010, 14:52:15
Reaguji na statese68:
„pokud je počet roven 0, pak by to mělo zahlásit, že není vybrána žádná volba“ Ale ne, to je počet všech formulářových prvků se jménem volba . Projeď si je cyklem.
var zatrzeno = false; for(var i = 0; i < document.formular2.volba.length; i++) { if(document.formular2.volba[i]) zatrzeno = true; } K reakci na blazeje44800: „tak jak navrhuješ prověřit jestli obsahuje formulář nějaká data“ To, co navrhuje, neprověří, zda formulář obsahuje nějaká data. |
||
states68 Profil * |
#9 · Zasláno: 22. 3. 2010, 15:50:09
Díky, už to běhá - bez zatržení se formulář neodešle. Ještě jsem to upravil takto:
var zatrzeno = false; for(var i = 0; i < document.formular2.volba.length; i++) { if(document.formular2.volba[i].checked) zatrzeno = true; } if(zatrzeno!=true) { window.alert("Nemáte vybráno"); return false; } |
||
Časová prodleva: 15 let
|
0