数据表。如何阻止search.dt事件从事件处理程序内部触发

时间:2016-01-07 10:36:59

标签: javascript javascript-events event-handling datatables

我有这个代码,当我检测到用户输入的过滤器包含一些不好的字符,如'我不希望它到达服务器。

我有这个简化的代码

$table.on('search.dt', function () {
    var value = getValue();
    if (antiHackingHelper.isValid(value)) {
    } else { // Contains charakter like "'" so don't call the server with this bad filter
        // Don't send the request to the server with a filter with bad charakters
    }
});

1 个答案:

答案 0 :(得分:2)

此时无法阻止执行搜索。 search.dt 已在您$table.on('search.dt' listener...被执行时播放,并且它不是您可以取消搜索“上游”的链的一部分。

相反,您可以首先防止在过滤器框中输入非法字符:

var illegalChars = "',.-*)(";
$('.dataTables_filter input').on('keypress', function(e) {
   if (~illegalChars.indexOf(String.fromCharCode(e.keyCode))) {
     console.log('Illegal char entered, aborting');
     return false;
   }
})

演示 - >的 http://jsfiddle.net/q39c3c0k/