jQuery中radio和select之间的交互

时间:2014-09-30 16:12:09

标签: jquery checkbox drop-down-menu radio-button

我遇到以下问题:我有一个选择框,例如: 3个值,一个单选按钮组和一个复选框。

我的目的是在选中选择框中的第三个值或选中某个(第二个)单选按钮时检查并禁用该复选框。

问题是:每当我选择其他单选按钮时,即使选择了第三个值,也会选中复选框但不会禁用。或者,如果我更改了选择框的值,即使选择了某个单选按钮,也会启用该复选框。

如何解决此问题?

提前致谢!!

<select id="sel" >
<option id="opt1" value="0"></option>
<option id="opt1"  value="1" >nope</option>
<option id="opt2"  value="2" >nope</option>
<option id="opt2"  value="3" >this</option>
</select>


<input type="radio" name="11" value="first" id="one"></input>
<input type="radio" name="11" value="second" id="two" ></input>
<input type="checkbox" name="22" value="third" id="third" ></input>


$("input[name='11']").change(function(){
if($("#one").is(":checked")) {
    $("#third").prop("checked",true).prop("disabled","disabled");
} else {   
    $("#third").attr("disabled", false);
}  
});

$("#sel").change(function(){
var m = $("#sel").val();
if (m == "3") {
    $("#third").attr("checked",true).attr("disabled","disabled");
} else {    
    $("#third").attr("disabled", false);}  
});

这里是链接:

http://jsfiddle.net/gcxbgdhc/2/

1 个答案:

答案 0 :(得分:0)

我建议制作一个单独的函数,检查是否选中和/或禁用复选框,并在单选按钮和选择的更改事件上调用该函数,如下所示:

$("input[name='11']").change(function(){
    setCheckbox();
});

$("#sel").change(function(){
    setCheckbox();
});

var setCheckbox = function() {
    if ($('#sel').val() === '3' || $('#two').is(':checked'))
    {
        $('#third').click().attr('disabled', 'disabled');
    }
    else
    {
        $('#third').removeAttr('checked').removeAttr('disabled');
    }
};

JSFiddle Demo

编辑:

只需添加if语句即可。我应该指出,如果您有任何需要的进一步规范,可能会有一些非常简单的if语句来解决问题。

所以在这个例子中,改变

$('#third').click().attr('disabled', 'disabled');

if (!$('#third').is(':checked'))
    {
        $('#third').click();
    }
$('#third').attr('disabled', 'disabled');

我已经更新了小提琴。干杯!