0

私のコードの何が問題になっていますか?ラジオボタンを検証する必要があります。最後のアイテムまで正常に動作します。[はい]または[いいえ]を選択すると、最後のオプションを空にしてフォームを送信できます。最後のオプションを検証できないようです。また、私はこのスクリプトを書きませんでした。私は正直にそれがどのように機能するか理解していません:/

これは私が持っているものです

function valida () {


if (document.example.name.value=="") {
alert ('NAME field is empty!');
return false;
}


else if (document.example.email.value=="") {
alert ('EMAIL field is empty!');
return false;
}



    var radios = document.getElementsByName("yesorno");
    var formValid = false;

    var i = 0;
    while (!formValid && i < radios.length) {
        if (radios[i].checked) formValid = true;
        i++;        
    }

    if (!formValid) alert("Select Yes or No!");
    return formValid;




    var radios = document.getElementsByName("color");
    var formValid = false;

    var i = 0;
    while (!formValid && i < radios.length) {
        if (radios[i].checked) formValid = true;
        i++;        
    }

    if (!formValid) alert("Pick a colour!");
    return formValid;



else {
return true;
}
}










<form name="example" id="example" action="submit-form.php" method="post" onsubmit="return valida();">    
<fieldset>


<label for="name">Name:</label>
<input type="text" name="name" id="name"/>




<label for="email">Email:</label>
<input type="text" name="email" id="email"/>    



<label>Yes or No?</label>    

YES
<input name="yesorno" type="radio" class="radio" value="yes" />

NO
<input name="yesorno" type="radio" class="radio" value="yes" />



<label>Red, green or yellow?</label>    

red
<input name="color" type="radio" class="radio" value="red" />

green
<input name="color" type="radio" class="radio" value="green" />

yellow
<input name="color" type="radio" class="radio" value="yellow" />



<input type="submit" value="submit" />


</fieldset>
</form>

編集:私はここにstackoverflowで解決策を見つけました。これは今私のために働きます:

function valida () {


if (document.example.name.value=="") {
alert ('NAME field is empty!');
return false;
}


else if (document.example.email.value=="") {
alert ('EMAIL field is empty!');
return false;
}



else if ($('input[name=yesorno]:checked').length == 0) {
alert ('Select Yes or No!');
return false;
}


else if ($('input[name=color]:checked').length == 0) {
alert ('Pick a colour!');
return false;
}



else {
return true;
}
}
4

1 に答える 1

0

コードの残りの部分に到達する前に、「はい/いいえ」の検証を返します。リターンがifステートメントで囲まれている場合、残りのコードに到達します。これを試して:

<script language=javascript>
function valida ()
{


if (document.example.name.value=="")
{
alert ('NAME field is empty!');
return false;
}


else if (document.example.email.value=="")
{
    alert ('EMAIL field is empty!');
    return false;
 }



var radios = document.getElementsByName("yesorno");
var formValid = false;

var i = 0;
while (!formValid && i < radios.length)
{
    if (radios[i].checked) formValid = true;
    i++;        
}

if (!formValid)
{
    alert("Select Yes or No!");
    return formValid;
}




radios = document.getElementsByName("color");
formValid = false;

i = 0;

while (!formValid && i < radios.length)
{
    if (radios[i].checked)
    {
        formValid = true;
    }
    i++;        
}

if (!formValid)
{
alert("Pick a colour!");
return formValid;
}


else
{
return true;
}

}

名前:Eメール:はいまたはいいえ?はいいいえ赤、緑、または黄色?赤緑黄
于 2013-01-31T14:50:28.127 に答える