取消选中一个复选框时,如何启用所有复选框?使用javascript
How to enable all checkbox when one checkbox is deselected ? using javascript
当我选中一个复选框时,我的代码就会工作,所有复选框都会被禁用。现在我想如果我取消选中这个复选框,所有复选框都应该被启用。以下是我尝试过的
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '80' onclick='return(validate())'>Q- 80. Statute of Liberty is in ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '153' onclick='return(validate())'>Q- 153. Indias Republic day is celebrated on ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '65' onclick='return(validate())'>Q- 65. Popular Language is ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '150' onclick='return(validate())'>Q- 150. Girnar is located at ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '154' onclick='return(validate())'>Q- 154. Largest Waterfall ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '152' onclick='return(validate())'>Q- 152. Asia is an ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '139' onclick='return(validate())'>Q- 139. Diamond is made up of ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '123' onclick='return(validate())'>Q- 123. Largest Desert ? </td> </tr>
JS:这个javascript是当选中一个复选框时,所有复选框都会被禁用。我希望反之亦然,当一个人取消选中复选框时,所有的都应该启用
function validate(){
for (i=0; i<document.myForm.check1.length; i++){
if (document.myForm.check1[i].checked !=true){
document.myForm.check1[i].disabled='true';
}
}
}
如果您坚持使用javascript而不是jQuery,因为这在jQuery中可能非常简单,请查看此处:
http://jsfiddle.net/CYLmn/18/
function validate(thisobj){
if(thisobj.checked==true){
for (i=0; i<document.myForm.check1.length; i++){
if (document.myForm.check1[i].checked !=true){
document.myForm.check1[i].disabled='true';
}
}
} else {
for (i=0; i<document.myForm.check1.length; i++){
document.myForm.check1[i].disabled='';
}
}
}
<script>
function validate(element){
for (i=0; i<document.myForm.check1.length; i++){
if (!(document.myForm.check1[i].checked)){
document.myForm.check1[i].disabled=true;
}
if(!(element.checked)){
document.myForm.check1[i].disabled=false;
}
element.disabled=false;
}
}
</script>
<form name="myForm" id="myForm">
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '80' onclick='return(validate(this))'>Q- 80. Statute of Liberty is in ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '153' onclick='return(validate(this))'>Q- 153. Indias Republic day is celebrated on ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '65' onclick='return(validate(this))'>Q- 65. Popular Language is ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '150' onclick='return(validate(this))'>Q- 150. Girnar is located at ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '154' onclick='return(validate(this))'>Q- 154. Largest Waterfall ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '152' onclick='return(validate(this))'>Q- 152. Asia is an ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '139' onclick='return(validate(this))'>Q- 139. Diamond is made up of ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '123' onclick='return(validate(this))'>Q- 123. Largest Desert ? </td> </tr>
</form>
试试这个
在For循环的First if条件检查每个元素是否被检查时,它会禁用未被检查的元素。
在第二个If条件中,它检查单击的元素是否未被选中,并启用所有元素。。
并且最终它启用了被点击的元素。
相当困惑,但符合目的。。。
需要提及的几件事:
- 一旦你确认了结果,最好还是启用那个复选框
- 您不需要将
onclick
添加到所有复选框中——它效率不高,难以维护,并且会为每个这样的声明生成后台匿名函数;您可以将事件附加到所有复选框的父项,只需选中事件的目标即可过滤掉所有未发布的元素
这是我为您提供的解决方案:
HTML
<form id="myForm">
<table>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '80'>Q- 80. Statute of Liberty is in ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '153'>Q- 153. Indias Republic day is celebrated on ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '65'>Q- 65. Popular Language is ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '150'>Q- 150. Girnar is located at ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '154'>Q- 154. Largest Waterfall ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '152'>Q- 152. Asia is an ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '139'>Q- 139. Diamond is made up of ? </td> </tr>
<tr> <td colspan='3'> <input type='checkbox' name='check1' value = '123'>Q- 123. Largest Desert ? </td> </tr>
</table>
</form>
JavaScript
function listen(element, event, callback) {
if(element.attachEvent) { // IE
element.attachEvent('on'+event, callback);
} else { // W3C
element.addEventListener(event, callback);
}
}
var form = document.querySelector('#myForm');
listen(form, 'click', function(event){
var checkBoxes, i, checked, target;
target = event.srcElement || event.target; // IE or W3C
if(target.getAttribute('name') === 'check1') {
checkBoxes = form.querySelectorAll('input[name="check1"]');
checked = target.checked;
for(i=0;i<checkBoxes.length;i++) {
checkBoxes[i].disabled = checked && checkBoxes[i] !== target;
}
if(checked) {
// Validate and do something with result (target.value)
} else {
// Reset validation and result
}
}
});
以下是一个工作示例:http://jsbin.com/iKiNenA/10/edit
注意:应该将<script>...</script>
放在<form>...</form>
之后,以确保它在加载表单DOM后运行。否则,使用document.onload = funciton() { ... }
包装代码
使用jQuery,您可以将javascript代码简化为:
$(function() {
$('#myForm').on('click', 'input[name="check1"]', function(event) {
$('#myForm input[name="check1"]').prop('disabled', event.target.checked);
event.target.disabled = false;
if(event.target.checked) {
// Validate and do something with result (event.target.value)
} else {
// Reset validation and result
}
});
});
示例:http://jsbin.com/iKiNenA/9/edit
在IE8+、FF、Safari、Chrome(在Mac和Windows上)上测试
相关文章:
- 如何使用javascript函数在gridview中按行启用/禁用复选框
- 单选按钮的验证(启用)&使用Jquery Optimization从复选框中选择submit按钮
- 如何使用复选框启用多个元素
- 如何使用复选框启用选项并通过本地存储进行保存
- 复选框启用/禁用在IE中不起作用
- 如何禁用基于另一个复选框启用复选框
- 使用动态添加的复选框启用/禁用按钮
- 组合框更改复选框启用
- 复选框启用和禁用文本区域
- 如何通过单击复选框启用输入
- 复选框启用 Onload 以显示其他元素
- 为什么可以't我使用复选框启用/禁用我的文本框
- jQuery复选框启用/禁用文本输入和添加/删除默认值
- 复选框启用非活动字段
- 使用复选框启用调用拖动
- 复选框启用或禁用的Jquery代码
- 复选框启用/禁用文件上传.当未选中复选框时,记录中的文件将被删除
- 使用JS通过复选框启用文本框
- 寻找复选框启用-禁用编码技术:减少JavaScript代码的技巧
- 通过选中复选框启用多个输入