确认单选按钮选择

时间:2015-03-10 18:27:09

标签: javascript webforms confirm

我一直在尝试在JavaScript中为我正在处理的表单创建一个确认框,以便用户必须确认他们选择的单选按钮选项。我已经设法让验证工作,但我无法在确认框中显示单选按钮的名称(相反,它表示“你选择了未经证实,这是正确的吗?”无论我选择哪个选项) 。这是代码的Javascript验证部分;我哪里出错?

var checked = null;
var inputs = document.getElementsByName('choices');
for (var i = 0; i < inputs.length; i++) {
    if (inputs[i].checked) {
    checked = inputs[i].value;
    break;
  }

}

if(checked==null)
{
alert('Please choose an option.');
return false;
}

else{
return confirm('You have chosen '+ checked.value + ', is this correct?');
}

编辑:这是我的单选按钮的HTML,希望这有帮助

<tr>
        <td id="options">Options</td>
        <td id="gcse"><input type="radio" name="options" value="GCSE" /> GCSE</td>
    <tr>
        <td></td>
        <td id="btec"><input type="radio" name="options" value="BTEC" /> BTEC</td></tr>
    <tr>
        <td></td>
        <td id="as"><input type="radio" name="options" value="AS" /> AS Level</td></tr>
    <tr>
        <td></td>
        <td id="alevel"><input type="radio" name="options" value="alevel" /> A2 Level</td> </tr>

3 个答案:

答案 0 :(得分:2)

实际上你的脚本几乎可以工作。但是你做得太多了。

您请求input.value.value,这将导致undefined

如果您将checked = inputs[i].value;更改为checked = inputs[i],您的代码将正常运行。

  

但是,如果您选择使用document.getElementsByName('choices');,则无线电元素的名称必须与choices匹配。

在此示例中为单选按钮添加了一个简单的单击处理程序,以向您显示差异:

&#13;
&#13;
function check()
{
var checked = null;
var inputs = document.getElementsByName('choices');
for (var i = 0; i < inputs.length; i++) {
    if (inputs[i].checked) {
    checked = inputs[i];
    break;
  }

}

if(checked==null)
{
alert('Please choose an option.');
return false;
}

else{
return confirm('You have chosen '+ checked.value + ', is this correct?');
}
  }
&#13;
<input onclick="check()" type="radio" name="choices" value="value 1">Value 1 <br />
<input onclick="check()" type="radio" name="choices" value="value 2">Value 2
&#13;
&#13;
&#13;

答案 1 :(得分:1)

他们的代码中的一个小错误只是在你的其他情况下写这个

返回确认('您选择'+ 已选中 +',这是正确的吗?');

只需从checked.value

中删除.value即可

这是bcoz你已经收集了上面的值而你正在做 像这样......

checked.value == input [i] .value.value

这就是为什么你没有得到你需要的东西

答案 2 :(得分:0)

如果没有看到您的HTML,很难提供解决方案。但您可以通过调用checked.name来访问输入标记的名称。