Ответ 1
С IE у вас есть onpaste
С Mozilla вы можете посмотреть в oninput и
elementReference.addEventListener("DOMCharacterDataModified", function(e){ foo(e);}, false);
Нет простого решения для пирога.
Эрик
Есть ли способ обнаружить правый клик, за которым следует вставка с JavaScript в IE и Firefox?
Update:
Я решил использовать JQuery для этого:
$('#controlId').bind('paste', null, function() {
// code
});
Это не совсем то, что я искал (потому что он запускается на "ctrl + v", а также в "правом клике + вставить", но я могу обойти его.
Протестировано в Chrome, Firefox 3, IE 7 и IE 6 и работает
С IE у вас есть onpaste
С Mozilla вы можете посмотреть в oninput и
elementReference.addEventListener("DOMCharacterDataModified", function(e){ foo(e);}, false);
Нет простого решения для пирога.
Эрик
Мне нравится это решение:
$('#txt_field').bind('input propertychange', function() {
console.log($(this).val());
});
$('#controlId').bind('paste', null, function(e) {
if(!e.keyCode){
/*
since no key was down at the time of the event we can assume it was
from the toolbar or right click menu, and not a ctrl+v
*/
}
});
Используйте setTimeout()
, установите малый тайм-аут до заполнения значения .val() func.
$(document).on('paste blur keyup', '#controlId', function(event) {
var element = $(event.target);
setTimeout(function() {
var text = $(element).val();
// do something with text
}, 100);
});
Источник: Ввод вставки вставки
У меня была такая же проблема в IE8. Chrome позволил мне распознать правую кликовую кнопку, но IE8 не был.
Мне удалось исправить проблему с помощью JQUERY, используя функцию отключения мыши, как описано Aaron, но вот код:
for IE8:
$( "#field" ).mouseleave(function() {
doStuff());
});
for Chrome:
$('#field').bind('input',function() {
doStuff();
});
Я сделал следующее, которое срабатывает только на mouseup:
onmouseup="jQuery(this).on('paste',function(event){setTimeout(function(){alert('Paste detected!');},100);});"
Дешевый взлом (который работает), который вы можете попробовать:
Я заметил с IE8, что если вы щелкнете правой кнопкой мыши в текстовом поле, а затем выберите "вставить", это задерживает событие "mouseleave" до завершения пасты. Поэтому он последовательно срабатывает сразу после пасты!:) Работает для меня и на самом деле избавляет меня от неприятностей.
Это только для приложения интрасети, которое я не тестировал в Firefox и т.д.
Приветствия