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 *
Nebylo by jednodušší jeden z buttonů zaškrtnout defaultně?
blazej44800
Profil
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 *
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
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 *
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 *
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
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 *
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;
}

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:

0