jQuery更改单选按钮值。很奇怪

时间:2013-09-06 15:39:15

标签: jquery dynamic radio setvalue

我有这个奇怪的问题,可能是我忽略了一些东西,但这让我发疯了。 在我的应用程序中,我不希望用户选择超过30个项目,所以如果用户点击进一步的单选按钮我不希望他这样做30个。

问题是,如果我通过jquery获取单选按钮的名称,然后设置该单选按钮的值,它不起作用,但如果我硬编码相同的名称,那么它确实有效

这是Jsfiddle的例子。 http://jsfiddle.net/s7GeZ/2/

HTML:

<span class="radiobut4" >
  Ignore <input type="radio" value="ignore" name="art_52643" id="52643" >
  Visible <input type="radio" value="visible" name="art_52643" id="52643" >
  Invisible <input type="radio" value="invisible" name="art_52643" id="52643">
</span>

Java脚本:

$('input:radio').live("change",function (event){
var radioName = $(this).attr("name");
    alert(radioName);
    $("input:radio[name='+radioName+'][value ='ignore']").prop('checked', true);
   // $("input:radio[name='art_52643'][value ='ignore']").prop('checked', true);

});

只需评论/取消注释最后两行即可查看问题。

任何形式的帮助都将受到赞赏。

2 个答案:

答案 0 :(得分:10)

引号不匹配,更改:

$("input:radio[name='+radioName+'][value ='ignore']").prop('checked', true);

$("input:radio[name='"+radioName+"'][value ='ignore']").prop('checked', true);

将变量连接到选择器 另请注意,具有相同名称的无线电是一个组,一次只能检查一个,具有相同ID的无线电只是无效标记。

答案 1 :(得分:1)

您需要指定收音机的名称,您选择的名称为“+ radioName +”的收音机不是您想要的。试试这个:

$("input:radio[name='"+radioName+"'][value ='ignore']").prop('checked', true);