我遇到以下问题:我有一个选择框,例如: 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);}
});
这里是链接:
答案 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');
}
};
编辑:
只需添加if语句即可。我应该指出,如果您有任何需要的进一步规范,可能会有一些非常简单的if语句来解决问题。
所以在这个例子中,改变
$('#third').click().attr('disabled', 'disabled');
到
if (!$('#third').is(':checked'))
{
$('#third').click();
}
$('#third').attr('disabled', 'disabled');
我已经更新了小提琴。干杯!