Обработчик событий jQuery для немедленного изменения входных данных - PullRequest
7 голосов
/ 12 мая 2011

Я ищу обработчик событий (jQuery), который выполняет функцию сразу после изменения значения input[type="text"]. Обработчик события .change jQuery выполняет функцию после того, как input[type="text"] потеряет фокус (что может быть полезно для другой ситуации).

keypress / up / down работает только тогда, когда пользователь вводит что-то во ввод (а не когда я динамически им манипулирую).

Есть ли какое-то решение для этого?

Ответы [ 2 ]

10 голосов
/ 12 мая 2011

Одна вещь, которую я делаю в подобных случаях, - это связывание одного и того же обработчика с кучей событий.

$('input').bind("change blur keyup mouseup", function() {
    $(this).css("color", "red"); // or whatever you want to happen
});

См. http://api.jquery.com/bind/

4 голосов
/ 12 мая 2011

Во-первых, я бы изменил событие изменения JQuery так, чтобы оно срабатывало, даже если вы изменяете его динамически с помощью функции val.Это действительно не имеет смысла для меня, почему это не поведение по умолчанию в JQuery.Вот код для этого:

//Store the old val function
$.fn.custom_oldVal = $.fn.val;

//Update the val function to fire the change event where appropriate:
$.fn.val = function(value) {
    if(value == null || value == undefined){
        return this.custom_oldVal();
    } else {
        //Only call onchange if the value has changed
        if(value == this.custom_oldVal()){
            return this;//Return this object for chain processing
        } else {
            return this.custom_oldVal(value).change();
        }
    }
}

Если вам нужно, чтобы он запускался в другое время, добавьте также тех прослушивателей событий, следуя процедуре, упомянутой jimbojw.

...