Как объяснил Хави , для этого не существует 100% кроссбраузерного решения, поэтому я сам создал для этого трюк (5 шагов):
1. Мне нужна пара новых массивов:
window.timeouts = new Array();
window.memo_values = new Array();
2. на фокус на вводимый текст, который я хочу вызвать (в вашем случае «электронная почта», в моем примере «имя») я установил интервал, например, с помощью jQuery (не нужно думать):
jQuery('#name').focus(function ()
{
var id = jQuery(this).attr('id');
window.timeouts[id] = setInterval('onChangeValue.call(document.getElementById("'+ id +'"), doSomething)', 500);
});
3. при размытии я удаляю интервал: (всегда используя jQuery, не требующий размышлений) и проверяю, изменилось ли значение
jQuery('#name').blur(function ()
{
var id = jQuery(this).attr('id');
onChangeValue.call(document.getElementById(id), doSomething);
clearInterval(window.timeouts[id]);
delete window.timeouts[id];
});
4. Теперь основной функцией, которая проверяет изменения, является следующая
function onChangeValue(callback)
{
if (window.memo_values[this.id] != this.value)
{
window.memo_values[this.id] = this.value;
if (callback instanceof Function)
{
callback.call(this);
}
else
{
eval( callback );
}
}
}
Важное примечание: вы можете использовать «this» внутри вышеуказанной функции, ссылаясь на ваш сработавший входной HTML-элемент. Чтобы эта функция работала, необходимо указать идентификатор, и вы можете передать функцию, или имя функции, или строку команды в качестве обратного вызова.
5. Наконец, вы можете что-то сделать, когда изменилось входное значение, даже если значение выбрано из выпадающего списка автозаполнения
function doSomething()
{
alert('got you! '+this.value);
}
Важное замечание: снова вы используете "this" внутри вышеуказанной функции, ссылаясь на ваш сработавший входной HTML-элемент.
РАБОЧАЯ СКРИПКА !!!
Я знаю, это звучит сложно, но это не так.
Я подготовил для вас рабочую скрипку , имя для изменения называется «имя», поэтому, если вы когда-либо ввели свое имя в онлайн-форму, у вас может появиться выпадающий список автозаполнения вашего браузера для проверки.