我有这段代码,当我检测到用户键入的筛选器包含一些坏字符(如'
)时,我不希望它到达服务器。
我有一个简化的代码:
$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 characters
}
});
此时无法阻止执行搜索。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/