Запуск кросс-браузерного события javascript при перетаскивании текста в текстовое поле - PullRequest
4 голосов
/ 11 октября 2011

Я хочу запустить событие javascript, когда текст внутри текстового поля изменяется, будь то ввод текста пользователем, вставка текста или перетаскивание текста.У меня проблемы с тем, куда пользователи перетаскивают текст из текстового поля.

В случае перетаскивания текста между текстовыми полями в chrome событие change () вызывается один раз для текстового поля, из которого оно было перетащено, и второй раз, когда текст помещается в текстовое поле назначения.

В Firefox или IE8 событие изменения никогда не запускается.

Есть ли более подходящее событие, которое я могу прослушать, которое работает в кросс-браузерном режиме?

В целях документации, вот код, который я использую, скопированный из jsfiddle выше.

HTML

<input value="drag me over there">
<input>

<div class="message"></div>

JQuery

$('input').change(function() {
    $('.message').append('changed<br/>');
});

1 Ответ

2 голосов
/ 11 октября 2011

Первый приведенный ниже пример работает во всех последних браузерах, включая ie9, второй - для ie8 и ниже.

$("some input element").bind("input", function () {
    // do something
});

$('some input element').bind("propertychange", function (e) {
    if (e.originalEvent.propertyName == "value") {
        // do something
    }
});

, они вызовут событие, однако содержимое внутри поля ввода изменится.

...