У меня есть текстовое поле, которое я связываю paste
событие к использованию JQuery. Когда я сначала приклеиваю что-то в область формы и регистрирую val()
это возвращает чистую последовательность. Аналогично, если я приклеиваю снова в область, она возвращает предыдущее значение перед приклеиванием. По существу у меня есть условие гонки или упорядочивающий проблему, из-за отсутствия лучшего термина. Кажется, что область формы не обновит, пока событие пасты не заканчивает.
Там какой-либо путь состоит в том, чтобы проверить ценность области после того, как событие пасты закончило, и область на самом деле населена? Я хочу фактическое значение поля, не clipboardData, поскольку я знаю, что это - особенность только для IE.
$('#url').bind('paste', function(e) {
alert($(this).val());
});
Оказывается достойное решение - это обернуть обратный вызов в Settimeate ()
, с задержкой 0 миллисекунды, чтобы сделать его асинхронный.
Мой новый код:
var urlField = $('#url');
urlField.bind('paste', function(e) {
setTimeout(function() {
alert(urlField.val());
}, 0); // note the 0 milliseconds
});
Благодаря Плагин входного ввода цифрового цвета , он использует эту технику по всему источнику.