根据其他单选按钮的操作禁用单选按钮

时间:2011-03-06 12:13:32

标签: jquery radio

这适用于一组3个单选按钮:

$("input:radio").click(function() {
    $(this).siblings("input:radio").attr("disabled","disabled"); 
});

更进一步......我有3组3个单选按钮:

1 2 3

1 2 3

1 2 3

如果用户在第一行检查数字1,我​​希望它在第二行和第三行禁用数字1 ...基本上我给每个用户3个选择,我希望他们对它们进行排名并希望所有排名与众不同。有意义吗?

这可能吗?

3 个答案:

答案 0 :(得分:1)

这将匹配页面上所有其他单选按钮,其值与您选择的相同,并禁用它们,同时禁用当前组中的其他按钮。

$("input:radio").click(function() {
    var val = $(this).val();
    $(this).siblings("input:radio").attr("disabled","disabled"); 
    $("input:radio[value='" + val + "']").not(this).attr("disabled","disabled"); 
});

就像菲利克斯所说的那样,这样做会使你在选择所有选项后无法改变你的选择。所以我建议你有一个重置按钮。

这是一个jsfiddle示例:http://jsfiddle.net/X6zKa/

答案 1 :(得分:1)

您需要一种简单的方法来选择其他单选按钮。从您的描述中可以看出,具有相同标签的所有单选按钮的值也具有相同的值,因此您可以选择该值。

将div中的单选按钮分组为共享类:

<div class="rating">
    <input type="radio" name="group1" value="1" />1
    <!-- more radio buttons -->
</div>
<div class="rating">
    <input type="radio" name="group2" value="1" />1
    <!-- more radio buttons -->
</div>
<!-- more radio button groups -->

您现在可以选择其他单选按钮组并禁用所有具有相同值的单选按钮:

$("input:radio").click(function() {
    var $this = $(this);
    var value = $this.val();
    $this.closest('.rating') # Parent div
        .siblings('.rating') # All the sibling divs, not this group
        .find('input:radio[value="' + value + '"]') # All radio buttons with the same value
        .attr("disabled","disabled"); 
});

或者,您可以使用not过滤器从组中删除当前输入选择器:

$("input:radio").click(function() {
    var $this = $(this);
    var value = $this.val();
    $('input:radio[value="' + value + '"]') # All radio buttons with the same value
        .not(this) # Explicitly remove the current radio button
        .attr("disabled","disabled"); 
});

答案 2 :(得分:1)

我在CSS-Tricks网站上看到了你所寻找的一个例子,非常好。 请点击此链接Radio Buttons with 2way Exclusivity