Проблема с плагином jQuery KeyFilter - PullRequest
1 голос
/ 06 июня 2011

Использование плагина keyfilter для jQuery, и, кажется, все хорошо, за исключением одной проблемы.

Я использую регулярное выражение для фильтрации элемента.

$('#nameVal').keyfilter(/[0-9a-zA-Z]/);

Странно то, что это не только позволяет вводить буквенно-цифровые символы, но также позволяет вводить '('. Фактически, не имеет значения, какое выражение я передаю ключевому фильтру, я не могу остановить '(' разрешено в текстовом поле.

Кто-нибудь еще сталкивался с этой проблемой и есть ли решение?

1 Ответ

1 голос
/ 07 июня 2011

Я обнаружил проблему.

Функция isSpecialKey в плагине KeyFilter возвращает значение true, если код ключа равен 40, что является кодом для «(». Это означает, что тест никогда не выполняется для символа.

var isSpecialKey = function(e)
{
    var k = e.keyCode;
    var c = e.charCode;
    return k == 9 || k == 13 || /*(k == 40 && (!$.browser.opera || !e.shiftKey)) ||*/ k == 27 ||
        k == 16 || k == 17 ||
        (k >= 18 && k <= 20) ||
        ($.browser.opera && !e.shiftKey && (k == 8 || (k >= 33 && k <= 35) || (k >= 36 && k <= 39) || (k >= 44 && k <= 45)))
        ;

    };

Устранение проблемы с фрагментом кода, описанным выше, не решает проблему. Не совсем уверен, какой эффект это окажет в других браузерах, но работает в IE8 и Chrome.

...