我在页面上有一个数据表,在我打开/关闭复选框之后,我想让所有行都不可编辑,除了第一行。然后,我将第一行的值复制到所有其他值(此部分可用)。
我一直在尝试做的是切换负责使列在某些行上可编辑的类,但由于某种原因它不起作用。
在我的字段声明中我有:
{ data: 'id' },
{ data: 'blocked' },
{ data: 'store' },
{ data: 'quantity',
className: 'edit' },
{ data: 'price' ,
className: 'edit'},
{ data: 'description' ,
className: 'edit'},
{ data: 'reference' }
我正在使用datakeys,因此,我还有以下声明:
keys: {
columns: '.edit',
editor: editor
}
这使得只有具有类.edit的单元格可编辑。这很好用。这就是我试图让一些单元格无法编辑的原因:
$("#changeAll").on("click", function(e) {
// This bit does its work correctly. It assigns the class to the correct elements.
if($("#changeAll").is(":checked")) {
$('#theTable tbody tr:not(:first-child) td.edit').addClass('notEdit').removeClass('edit');
} else {
$('#theTable tbody tr:not(:first-child) td.notEdit').addClass('edit').removeClass('notEdit');
}
});
所以类正确切换,但数据表似乎破了。当试图改变任何给定的单元格时,它不再可编辑(即使应该是那些并且确实为它们分配了正确的类)。此外,密钥导航似乎没有改变。任何编辑尝试后,浏览器都会抛出以下异常:
Uncaught TypeError: Cannot read property 'index' of undefined
at l._editor (dataTables.keyTable.min.js:9)
at HTMLTableElement.<anonymous> (dataTables.keyTable.min.js:8)
at HTMLTableElement.dispatch (jquery-1.11.3.js:4670)
at HTMLTableElement.elemData.handle (jquery-1.11.3.js:4338)
at Object.trigger (jquery-1.11.3.js:4579)
at jQuery.fn.init.triggerHandler (jquery-1.11.3.js:5295)
at _Api.<anonymous> (dataTables.keyTable.min.js:10)
at _Api.iterator (jquery.dataTables.js:6926)
at l._emitEvent (dataTables.keyTable.min.js:10)
at l._key (dataTables.keyTable.min.js:13)
我在我的智慧结束。任何帮助都会受到赞赏,即使这意味着重写整个事情。