我有两个不同名称的复选框:
<input type="checkbox" name="checkbox1" value="checkbox1">
<input type="checkbox" name="checkbox2" value="checkbox2">
我想实现代码,当复选框1被选中时,复选框2被禁用,当复选框2被选中时,复选框1被禁用。当它未被选中时,它也应该启用另一个。
如何使用 jQuery 或 JavaScript 实现?
我有两个不同名称的复选框:
<input type="checkbox" name="checkbox1" value="checkbox1">
<input type="checkbox" name="checkbox2" value="checkbox2">
我想实现代码,当复选框1被选中时,复选框2被禁用,当复选框2被选中时,复选框1被禁用。当它未被选中时,它也应该启用另一个。
如何使用 jQuery 或 JavaScript 实现?
首先,我假设您想做的工作不能通过单选按钮完成,因为这是显而易见的选择。如果可以,这里有几个链接: http ://wiki.answers.com/Q/What_are_the_differences_between_radio_buttons_and_checkboxes http://www.w3schools.com/html/tryit.asp?filename=tryhtml_radio
Checkbox 1: <input id="checkbox1" type="checkbox" onchange="onCheckboxChanged();"/>
Checkbox 2: <input id="checkbox2" type="checkbox" onchange="onCheckboxChanged();"/>
<script type="text/javascript">
//Initialize checkboxes
onCheckboxChanged();
</script>
JS:
var onCheckboxChanged = function(checkbox){
var checkbox1 = document.getElementById('checkbox1');
var checkbox2 = document.getElementById('checkbox2');
if(checkbox1.checked){
checkbox2.disabled = true;
}
else {
checkbox2.disabled = false;
}
};
试试这个代码,
html,
<input type="checkbox" name="checkbox1" value="checkbox1"/>
<input type="checkbox" name="checkbox2" value="checkbox2"/>
javascript,
$('[type="checkbox"]').click(function() {
if ($(this).is(":checked")) {
$('[type="checkbox"]').not(this).attr('disabled', 'disabled');
} else {
$('[type="checkbox"]').not(this).removeAttr('disabled');
}
});
演示
这是 jquery 示例http://jsfiddle.net/XnQzQ/
$('input[name=checkbox1]').click(function() {
if($('input[name=checkbox1]').is(':checked'))
{
$('input[name=checkbox2]').attr("disabled", "disabled")
}
else
{
$('input[name=checkbox2]').removeAttr( "disabled");
}
});
$('input[name=checkbox2]').click(function() {
if($('input[name=checkbox2]').is(':checked'))
{
$('input[name=checkbox1]').attr("disabled", "disabled")
}
else
{
$('input[name=checkbox1]').removeAttr( "disabled");
}
});
避免过度使用 jQuery,只使用纯 JavaScript。
HTML:
<input type="checkbox" id="checkbox1" value="checkbox1" onchange="checker()" />
<input type="checkbox" id="checkbox2" value="checkbox2" onchange="checker()" />
JavaScript:
function checker() {
var checkbox1 = document.getElementById('checkbox1');
var checkbox2 = document.getElementById('checkbox2');
checkbox1.disabled = checkbox2.checked;
checkbox2.disabled = checkbox1.checked;
}
演示:http: //jsfiddle.net/fEpWJ/
使用 jQuery 很简单:
$(document).ready(function() {
var $cbs = $('input[type="checkbox"][name^="checkbox"]').click(function() {
$cbs.not(this).prop('disabled', this.checked);
});
});
演示:http: //jsfiddle.net/j6Jpz/
虽然如果这个想法是为了防止同时选中两个复选框,我建议如果你同时启用这两个复选框,但当一个被选中时自动取消选中另一个,对用户来说会更好:
$(document).ready(function() {
var $cbs = $('input[type="checkbox"][name^="checkbox"]').click(function() {
if (this.checked) $cbs.not(this).prop('checked', false);
});
});
演示:http: //jsfiddle.net/j6Jpz/1/
注意:我使用的选择器'input[type="checkbox"][name^="checkbox"]'
,表示查找名称以“复选框”开头的所有复选框类型的输入。如果您为有问题的输入'input.someClass'
提供了一个通用类 ,这可以简化为。class="someClass"
另请注意,我的代码的任一版本都会自动处理更大的复选框组。