2011-05-20 99 views
1
<input type="radio" checked="checked" value="true" name="child"> 
<span class="label">Show</span> 
<input type="radio" class="hide" value="false" name="child"> 
<span class="label">Hide</span> 

,并在同一页面检查所有单选按钮检查具有特定值

<input type="radio" checked="checked" value="true" name="baby"> 
<span class="label">Show</span> 
<input type="radio" class="hide" value="false" name="baby"> 
<span class="label">Hide</span> 

我需要知道,如果有value="false"所有的单选按钮使用JavaScript检查了另一个单选按钮。

注:单选按钮的名称是不同的

回答

1

你可以试试这个:

function testRadios() { 
    var r = document.getElementsByTagName("input"); 

    for (var i=0; i < r.length; i++) { 
     if ( (r[i].type == "radio") 
      && (r[i].value == "false") 
      && (r[i].checked != "checked")) { 
      return false; 
    } 
    return true; 
} 

PS:使用<label>而不是<span class="label">

2

如果你使用jQuery,这是非常干净:

if ($("input[type='radio'][value='false']").not(':selected').length==0) { 
    // Do what you want 
} 

jQuery的表达是指所有的假单选按钮选择

1

boudou通过35秒打我......

然而,除了for你可以使用一个foreach逻辑:

var buttons = document.getElementsByTagName("input"); 

for (var i = 0; i < buttons.length; i++) { 
    var button = buttons[i]; 
    var id = button.getAttribute("id"); 
    var type = button.getAttribute("type"); 
    var value = button.getAttribute("value"); 
    var checked = button.getAttribute("checked"); 
    if (type === "radio" && value === "false" && checked === "checked") { 
     alert(id); 
    } 
} 

该脚本可以被浓缩,它是这样写的,让一个更好理解。

查看演示here

+0

考虑+1 a -1,投票被锁定。见http://stackoverflow.com/a/243778/247702为什么你不应该使用'for in'循环。 – Stijn 2012-06-04 11:40:29

+0

@Stijn:更新了示例。 – Albireo 2012-06-05 14:36:14