Как получить ценность области во время события пасты?

У меня есть текстовое поле, которое я связываю paste событие к использованию JQuery. Когда я сначала приклеиваю что-то в область формы и регистрирую val() это возвращает чистую последовательность. Аналогично, если я приклеиваю снова в область, она возвращает предыдущее значение перед приклеиванием. По существу у меня есть условие гонки или упорядочивающий проблему, из-за отсутствия лучшего термина. Кажется, что область формы не обновит, пока событие пасты не заканчивает.

Там какой-либо путь состоит в том, чтобы проверить ценность области после того, как событие пасты закончило, и область на самом деле населена? Я хочу фактическое значение поля, не clipboardData, поскольку я знаю, что это - особенность только для IE.

$('#url').bind('paste', function(e) {
    alert($(this).val());
});
9
задан Justin Johnson 13 January 2010 в 08:36
поделиться

1 ответ

Оказывается достойное решение - это обернуть обратный вызов в Settimeate () , с задержкой 0 миллисекунды, чтобы сделать его асинхронный.

Мой новый код:

var urlField = $('#url');
urlField.bind('paste', function(e) {
    setTimeout(function() {
        alert(urlField.val());
    }, 0); // note the 0 milliseconds
});

Благодаря Плагин входного ввода цифрового цвета , он использует эту технику по всему источнику.

17
ответ дан 4 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: