2013-07-22 1 views
1

В моем коде JavaScript/jQuery у меня есть текстовое поле, в котором я запускаю событие, когда текст изменяется с помощью события keyup. Однако в настоящее время я учитываю только изменения, сделанные с помощью клавиатуры.Как определить rightclick + cut/delete/paste/undo в javascript?

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

Примечание. Это должно работать в IE9, а предпочтительно в Firefox и Chrome, но определенно необходимо работать в IE9.

Благодаря

+2

http://stackoverflow.com/q/10827256 –

+0

http://stackoverflow.com/q/3079722 –

+0

http://stackoverflow.com/q/2903991 –

ответ

5

jsFiddle Demo

Использование JQuery, чтобы связать событие ввода для элемента, как это:

$('#myInput').bind('input',function(){ 
    //use this for the input element when input is made 
    var inputValue = this.value;//for example 
}); 
+0

Также для IE8 и ниже вы можете заменить 'input' на' propertychange'. – sneaky

+1

Это не работает на IE9 для ctrl-X, backspace key, delete key. Также не удачи при выборе undo/cut/delete из контекстного меню. – Shaung

0

В начале, это не совсем правильный путь сделать это. Но если вы будете реагировать на событие mouseout ввода, вы, скорее всего, получите его, чтобы вести себя так, как вы хотите.

$('#input').mouseout(function(){ 
    if($('#input').is(":focus")) 
    console.log("Right-click"); 
}); 

Хотя отметить, что это может не работать, а на прокручиваемым, так как они, как правило, больше, и мышь не может быть вне его, когда Контекстное была нажата.

Примечание: кроме @Travis J, которые реагируют на все взаимодействия, это будет (возможно) только инициировать событие на rightclick (и регулярное мышь).