1

这非常适用于一组 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 个选择,我希望他们对它们进行排名并希望所有排名都不同. 说得通?

这可能吗?

4

2 回答 2

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"); 
});

就像 Felix 说的那样,这将使您在选择所有选项后无法更改您的选择。所以我建议你有一个重置按钮。

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

于 2011-03-06T12:34:56.333 回答
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"); 
});
于 2011-03-06T12:35:42.627 回答