Ответ 1
Событие onpaste
срабатывает до изменения input
value
. Вам нужно что-то вроде setTimeout
:
<input type="text" placeholder="Paste text" onPaste="var e=this; setTimeout(function(){alert(e.value);}, 4);">
Я сохраняю ссылку на this
внутри глобального var, поскольку this
недоступен внутри области функции таймаута, которая привязана к объекту окна.
Я использую 4 миллисекунды в качестве таймаута, так как это минимальный допустимый интервал/тайм-аут в спецификации HTML5. Изменить: Как отмечено в комментариях, вы также можете использовать 0
miliseconds как timeOut, который автоматически пересчитывается на 4
. тесты jsPerf.
Вы также можете использовать вызов функции внутри вашего события onpaste
, проходящего this
, в качестве параметра, чтобы предотвратить слишком много смешивания HTML с JS.:)
И здесь функция легче читать и которую вы можете использовать в нескольких входах:
function pasted(element) {
setTimeout(function(){
alert(element.value);
}, 0); //or 4
}
который можно вызвать простым onPaste="pasted(this)"
для любого ввода.