使用复选框禁用表

Inn*_*ynn 0 javascript html-table

我有这个复选框,每当我选中复选框时,如何禁用表(禁用表中的所有输入字段)?

<label><input type="checkbox" name="view" value="d">N/A</label> 
Run Code Online (Sandbox Code Playgroud)

是否可以使用纯JavaScript而不是jQuery.

这是现在的代码

var elems = document.getElementById('table-id').querySelectorAll('input,select,textarea');
document.getElementById('check').onchange = function () {
    if (document.getElementById('check').checked) {
        for (var i = 0; i < elems.length; i++) {
            elems[i].disabled = true;
        }
    } else {
        for (var i = 0; i < elems.length; i++) {
            elems[i].disabled = false;
        }    
        }
    }
Run Code Online (Sandbox Code Playgroud)

和桌子

<table id='table-id' border="1">
Run Code Online (Sandbox Code Playgroud)

但它显示如下错误:

未捕获的TypeError:无法读取null的属性'querySelectorAll'

Abh*_*lks 5

使用jQuery很容易:

$("#tableId").find(":input").prop("disabled", true);
Run Code Online (Sandbox Code Playgroud)

使用Javascript,它有点长:

var elems = document.getElementById('tableId').querySelectorAll('input,select,textarea');

for (var i = 0; i < elems.length; i++) {
    elems[i].disabled = true;
}
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/abhitalks/6s7QL/2/

更新:

添加了您的复选框代码

document.getElementById('checkboxId').onchange = function () {...
Run Code Online (Sandbox Code Playgroud)

  • @FrédéricHamidi:是的,"attr"的旧习惯.纠正. (2认同)
  • 那就是试图成为[西方最快的枪]的问题(http://meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem);)收回并恢复 (2认同)