确认单选按钮选择

Confirmation of radio button choice

我一直在尝试在 JavaScript 中为我正在处理的表单创建一个确认框,以便用户必须确认他们选择的单选按钮选项。我已经设法让验证正常工作,但我无法让单选按钮的名称显示在确认框中(相反,无论我选择哪个选项,它都会显示 "You have chosen unconfirmed, is this correct?")。这是代码的 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>

没有看到您的 HTML 就很难提出解决方案。但是您可以通过调用 checked.name.

来访问输入标签的名称

实际上您的脚本几乎可以正常工作。但是你一步太多了。

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

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

However if you select using document.getElementsByName('choices'); the name of your radio elements must match choices.

在此示例中向单选按钮添加了一个简单的点击处理程序以向您展示不同之处:

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?');
}
  }
<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

他们是你代码中的一个小错误,只需在你的 else 条件下写这个

return confirm('You have chosen '+ checked+ ', 这是正确的吗?');

只需删除 checked.value

中的 .value

这是因为你已经收集了上面的值并且你正在做 像这样...

checked.value == 输入[i].value.value

这就是您没有得到所需内容的原因