JS函数始终返回False

时间:2013-04-10 19:46:50

标签: javascript

下面的函数总是返回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";
    }
}

1 个答案:

答案 0 :(得分:0)

要使用纯js解决此问题,您可以使用input循环遍历所有getElementsByName标记(而不是使用getElementById,因为您的ID不是唯一的):

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;