jQuery数据表以编程方式使行无法编辑

时间:2017-01-27 13:45:31

标签: javascript jquery datatables

我在页面上有一个数据表,在我打开/关闭复选框之后,我想让所有行都不可编辑,除了第一行。然后,我将第一行的值复制到所有其他值(此部分可用)。

我一直在尝试做的是切换负责使列在某些行上可编辑的类,但由于某种原因它不起作用。

在我的字段声明中我有:

{ 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)

我在我的智慧结束。任何帮助都会受到赞赏,即使这意味着重写整个事情。

0 个答案:

没有答案