我一直在尝试在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>
答案 0 :(得分:2)
实际上你的脚本几乎可以工作。但是你做得太多了。
您请求input.value.value
,这将导致undefined
。
如果您将checked = inputs[i].value;
更改为checked = inputs[i]
,您的代码将正常运行。
但是,如果您选择使用
document.getElementsByName('choices');
,则无线电元素的名称必须与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?');
}
}
&#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;
答案 1 :(得分:1)
他们的代码中的一个小错误只是在你的其他情况下写这个
返回确认('您选择'+ 已选中 +',这是正确的吗?');
只需从checked.value
中删除.value即可这是bcoz你已经收集了上面的值而你正在做 像这样......
checked.value == input [i] .value.value
这就是为什么你没有得到你需要的东西
答案 2 :(得分:0)
如果没有看到您的HTML,很难提供解决方案。但您可以通过调用checked.name
来访问输入标记的名称。