jQuery:根据名称和值选择复选框

jQuery:根据名称和值选择复选框,jquery,Jquery,我有以下HTML: <form id="test"> <input type="radio" value="A" name="C1"/> <a href="javascript:selectCheckbox('C1', 'A');"> OPTION-A </a> <input type="radio" value="B" name="C1"/> <a href="javascript:selectCheckbox

我有以下HTML:

<form id="test">
  <input type="radio" value="A" name="C1"/>
  <a href="javascript:selectCheckbox('C1', 'A');"> OPTION-A </a>

  <input type="radio" value="B" name="C1"/>
  <a href="javascript:selectCheckbox('C1', 'B');"> OPTION-B </a>

 <input type="radio" value="C" name="C1"/>
  <a href="javascript:selectCheckbox('C1', 'C');"> OPTION-C </a>

  // several other: C2, C3, ..
</form>

请让我知道我做错了什么。非常非常感谢

试试$input[name='C1']:选中]。ID应该是唯一的,因此jquery可能不希望返回多个元素

一个页面上不能有多个id相同的元素。所有输入元素的id都是C1。

我会使用相对DOM位置来进行导航。另外请注意,不能有具有相同id的不同元素,但在本例中,这是不必要的,因为可以使用名称上的属性选择器来查找正确的输入。请注意,您已经知道需要根据单击的链接的位置检查各种输入中的哪些。我更喜欢将代码与标记分开,因此我给了链接一个类,使它们易于选择,并将click handler应用程序移动到代码中

更新:注意,我删除了代码以取消选中其他收音机。对于收音机,将一个设置为“已选中”将自动取消选中其他任何一个

$(function() {
     $('a.checkbox-selector').click( function() {
         // get the checkbox immediately preceding the link -- this should
         // be checked.  Checking it should automatically uncheck any other
         // that may be checked.
         $(this).prev(':checkbox');
                .attr('checked',true);
         return false;  // don't process the link
     });
});

<form id="test">
  <input  type="radio" value="A" name="C1"/>
  <a href="#" class="checkbox-selector"> OPTION-A </a>

  <input  type="radio" value="B" name="C1"/>
  <a href="#" class="checkbox-selector"> OPTION-B </a>

  <input  type="radio" value="C" name="C1"/>
  <a href="#" class="checkbox-selector"> OPTION-C </a>

  <!-- several other: C2, C3, ... -->
</form>

谢谢你的帮助,我终于得到了:

function selectTestAnswer( chkbox, value ) {
    $("[name="+chkbox+"]").each( function() {   
        if ( $(this).val() ==  value )
            $(this).attr('checked', true);
        else
            if ( $(this).attr('checked') == true)
                $(this).attr('checked', false);
}); 
}试试这个:

$('input:radio[name="' + chkboxName + '"][value="' + value + '"]')
    .attr('checked', 'checked');

如果jquery版本>1.6,则可以使用prop而不是attr

请参阅此链接

从jQuery1.6开始,.prop方法提供了一种显式 检索属性值,而.attr检索属性

因此,您要查找的代码看起来更像

$('input:checkbox[name="Validators"][value="' + v + '"]').prop('checked',true);

你不应该有多个元素具有相同的ID。你是对的,我现在删除了ID。谢谢注意:在jQuery1.3中,删除了[@attr]样式选择器,它们以前在jQuery1.2中被弃用。只需将“@”符号从选择器中删除,即可使其再次工作。您可以这样做,但出于以下几个原因,这样做是不好的。尝试一下,注意$id和$[id=id]之间的区别。后者将返回一个包含多个共享id的元素的包装集,而前者将返回一个只包含第一个声明的具有此id的元素的包装集。
$('input:checkbox[name="Validators"][value="' + v + '"]').prop('checked',true);