Кроссбраузерный ввод JavaScript в реальном времени изменения / обнаружения вставки - PullRequest
9 голосов
/ 20 июня 2010

Существует ли кросс-браузерный способ для обнаружения изменений в реальном времени в поле ввода ?

По в реальном времени , я имею в виду не тогда, когда поле теряет фокус, ане при следующем нажатии клавиши и тд.Немедленно или что-то в этом роде.

Используя комбинации jQuery и .change(), .keyup(), .bind('paste') и т. Д., Я могу получить обнаружение изменений в реальном времени в некоторых браузерах, но не во всех .Использование разных комбинаций заставит его работать в других браузерах.

Самая хитрая вещь для работы - это манипулирование мышью поля ввода - выделение текста и его перемещение (которое по существу вырезано и вставлено), щелчок правой кнопкой мыши, вставка или вырезание и т. Д.По какой-то причине даже .mousedown() и .mouseup(), похоже, не сокращают его.

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

Есть ли плагин jQuery, который уже это делает?Или есть другой способ добиться этого?

Ответы [ 2 ]

2 голосов
/ 20 июня 2010

Чтобы завершить изменения и обработчики ключей, вы можете добавить обработчики для вырезать / копировать / вставить .Они работают в Firefox> = 3, IE, Safari и Chrome (но не в Opera / Konqueror).

Будет ли это охватывать все для вашего варианта использования?

1 голос
/ 02 августа 2011

В зависимости от браузеров, которые вам нужны, вы можете использовать HTML5 oninput .
Он срабатывает сразу после изменения контролируемого входа. В jQuery вы бы просто сделали:

$('#my-input').bind('input', function(e) {
    console.log("#my-input's value changed");
});
...