Как проверить правильность ввода перед вводом значения? - PullRequest
1 голос
/ 21 февраля 2012

У меня действительно странная проблема. Вот мой текущий Javascript:

jQuery('.highlightableTDCell input').keydown(function () {
    var val = jQuery(this).val();
    if (!GridView.prototype.validateStandardCellNumberFormat(val)) {
        return false;
    }
    else return true;
});

Когда я использую это, я все еще могу избежать ввода нелегального символа, но не более того. Я действительно запутался, потому что думал, что это произойдет первым.

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Внутри события keydown element.value еще не был обновлен для учета клавиши, которая нажата в данный момент.Если вы хотите, чтобы ключ не попадал в поле ввода, вам нужно запросить событие, которое вы хотите разрешить или нет.

0 голосов
/ 21 февраля 2012

Событие возникает до того, как новый контент поступил на вход (что позволяет отменить поведение по умолчанию.)

Вы можете использовать что-то вроде этого, чтобы получить новый контент:

$('.highlightableTDCell input').keypress(function(e){
    var temp = this.value + String.fromCharCode(e.which)   

    return GridView.prototype.validateStandardCellNumberFormat(temp)
});

Обратите внимание, что это не полное доказательство.например, когда пользователь вводит новый символ в середине ввода.

Проверка должна выполняться только на blur.С HTML5 он должен быть лучше, но пока не все браузеры его поддерживают.

  • Совет: this.value == jQuery(this).val() Нет необходимости создавать jQuery object, чтобы получить значение
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...