JavaScript。检查单选按钮表示奇怪

时间:2012-02-06 15:02:07

标签: javascript html

我试图强制用户在页面上选择一个单选按钮,但是当用户选中“否”选项时,我的.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

6 个答案:

答案 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)

根据HTML规范,

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