Вопрос: Обработчик событий jQuery для немедленных изменений в входах


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

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

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


7


источник


Ответы:


Во-первых, я бы изменил событие изменения 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.


4



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

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

Видеть http://api.jquery.com/bind/


10