如何使用keyup侦听器基于ExtJS中的()。+ *等特殊字符过滤文本字段

时间:2012-02-24 06:26:53

标签: extjs

我需要根据输入字符过滤textfield,当我们提供普通字符时它工作正常,但是当我们输入特殊字符时,它不会过滤。

如何使用textfield侦听器根据ExtJS中的()。+ *等特殊字符过滤keyup

***注意:剩余的特殊字符工作正常,只有()。+ *不起作用

代码:

var filter = function (valu, listv) {
    if (valu !== '') {
        listv.store.filter({
            property     : 'value',
            value        : new RegExp(valu, "i"),
            anyMatch     : true, //optional, defaults to true
            caseSensitive: true  //optional, defaults to true
        });
    } else {
        listv.store.filter({
            property     : 'value',
            value        : /.*/,
            anyMatch     : true,
            caseSensitive: true
        });
    }
    listv.select(-1);
}

1 个答案:

答案 0 :(得分:1)

您需要escape RegEx中的特殊字符,如下所示:

function escapeRegExp(str) {
  return str.replace(/[-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}

var filter = function (valu, listv) {
    if (valu !== '') {
        listv.store.filter({
            property     : 'value',
            value        : new RegExp(escapeRegExp(valu), "i"),
// ...