0

以下の関数は常に false を返します。理由はわかっていると思いますが、修正方法がわかりません。検証するラジオフォームはループを使用して生成され、各ラジオフィールドの ID を「myfilling」に設定しましたが、それが間違っていると思います。

機能は次のとおりです。

if(!document.getElementById('myfilling').checked) {
    var resultloc=document.getElementById("fillingerror");
    resultloc.innerHTML =  "<span style='color:red;'>Please select a filling!<span>";
    return false;
} else {
    var resultloc=document.getElementById("fillingerror");
    resultloc.innerHTML =  "";
    return true;
}

フィールドの最初のラジオ ボタンを選択すると、エラーは発生しません。ただし、他のボタンを選択すると、エラーが発生します。これを修正するにはどうすればよいですか?

無線フィールドは、次のように生成されます。

 function make_filling_radio($filling)
{
    $filling = array("Carne de Casa (shredded beef)", "Carnitas (shredded pork)", "Pulled BBQ Chicken", "Roasted Chili Lime Chicken", "Roasted Veggies");

    foreach ($filling as $value){
        if (!empty($filling) and (FALSE !== array_search($value, $filling)))
            echo "<input type=\"radio\" name=\"filling\" value=\"$value\" id='myfilling'> $value<br>\n";
        else
            echo "<input type=\"radio\" name=\"filling\" value=\"$value\" id='myfilling'> $value<br>\n";
    }
}
4

1 に答える 1

0

純粋な js でこの問題を解決するには、( id が一意ではないため、を使用する代わりに) を使用してすべてのinputタグをループできます。getElementsByNamegetElementById

var input_elements = document.getElementsByName("filling");

for (var i=0; i < input_elements.length; i++) {
  if (elements[i].checked) {
     //checked radio found
     return true;
  }
}

//...
return false;
于 2013-04-10T20:11:48.427 に答える