我试图强制用户在页面上选择一个单选按钮,但是当用户选中“否”选项时,我的.checked值即将出现false
。
var long = document.getElementById('long');
if(long.checked == false){
message += '- Please select your stance\\r\\n';
errors = true;
}
<input name='long' id='long' type='radio' value='Yes' >Yes
<input name='long' id='long' type='radio' value='No' >No
答案 0 :(得分:1)
你的两个输入的id都是“long”,所以getElementById可能会返回第一个,即“是”按钮。
答案 1 :(得分:1)
你不能给两个元素相同的“id”值。您可以使用.getElementsByName()
找到一组单选按钮,然后查找已选中的单选按钮,或者给它们两个不同的“id”值(这是我可能会做的)。
<input name='long' id='long_yes' type='radio' value='Yes'>Yes
<input name='long' id='long_no' type='radio' value='No'>No
答案 2 :(得分:1)
ID必须是唯一的,因此您的代码将无法按照书面形式运行。
如果从FORM方法看它,单选按钮就是一个数组:
var radios = document.form1.long
for(var x=0;x<radios.length;x++) {
alert(radios[x].value)
}
因此,您可以检查是否选择了YES,因为YES是数组中的第一个元素。
var radios = document.form1.long
if(radios[0].checked) { ... }
答案 3 :(得分:1)
您不能拥有两个具有相同ID属性的复选框。给每个人一个不同的ID,它应该正常工作。
var long = document.getElementById('longNo');
if(long.checked == false){
message += '- Please select your stance\\r\\n';
errors = true;
}
<input name='long' id='longYes' type='radio' value='Yes' >Yes
<input name='long' id='longNo' type='radio' value='No' >No
答案 4 :(得分:0)
两个单选按钮具有相同的ID,因此它只从getElementById调用中获取第一个。
更改您的代码以使用document.getElementsByName("long")
然后循环并检查每个代码:
var long = document.getElementsByName('long'), message = "";
var checked = false;
for (var i = 0; i < long.length; i++) {
if (long[i].checked) {
checked = true;
}
}
if(!checked){
message += '- Please select your stance\\r\\n';
alert(message);
}
未选中 - http://jsfiddle.net/myFhm/ 没有选中 - http://jsfiddle.net/myFhm/1/
答案 5 :(得分:0)
两个单选按钮都有相同的ID,名称需要保持不变,但它们必须具有不同的ID
试试这个:
var longYes = document.getElementById('longYes');
var longNo = document.getElementById('longNo');
if(longYes.checked == false && longNo.checked == false){
message += '- Please select your stance\\r\\n';
errors = true;
}
<input name='long' id='longYes' type='radio' value='Yes' >Yes
<input name='long' id='longNo' type='radio' value='No' >No