2

我有这个奇怪的问题,可能是我忽略了一些东西,但这让我发疯了。在我的应用程序中,我不希望用户选择超过 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);

});

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

任何形式的帮助将不胜感激。

4

2 回答 2

10

不匹配的引号,更改:

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

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

将变量连接到选择器中。
还要注意,同名的电台是一个组,一次只能检查一个,同名的电台只是无效标记。

于 2013-09-06T15:42:41.873 回答
1

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

$("input:radio[name='"+radioName+"'][value ='ignore']").prop('checked', true);
于 2013-09-06T15:43:48.343 回答