如果用户在textarea#q中键入某些内容,则会调用 do_domething()函数。如果用户粘贴文本而不是键入文本,则应避免使用do_something()函数。有任何想法吗?这是我目前的代码:
$('#q').keyup(function(e){
do_something();
}).bind('paste',function(event) {
//user pasted text, there is not need to do_something();
//tried both of these approaches, none worked out.
event.stopPropagation();
event.stopImmediatePropagation();
});
答案 0 :(得分:1)
您无法阻止keyUp
事件!它实际上不允许用户从键盘上抬起手! :P
在jQuery中,有一个名为cut copy paste
的事件。这适用于IE,FF,Chrome。
$(document).ready(function(){
$('#q').bind("cut copy paste", function(e) {
e.preventDefault();
});
$('#q').keyup(function(e){
do_something();
});
});
另外,请分别使用keyup
函数的事件处理程序。
答案 1 :(得分:1)
如果用户右键单击并使用上下文菜单粘贴到textarea中,那么您就是好的。这留下了用户使用“Ctrl + P”粘贴到textarea的问题。您可以尝试捕获密钥代码并在按下组合键时跳过该功能。试试这个:
On keydown:
var isCtrl = false;
$('#q').keydown(function (event) {
if(e.keycode == 17)
isCtrl = true;
if(isCtrl == false)
do_something();
});
$('#q').keyup(function (e) {
isCtrl = false;
});
所以想法是捕获“Ctrl”键。如果他们按下它你不想激活该功能。为了粘贴“Ctrl + P”,必须按下“Ctrl”键,因此“isCtrl”将为真,防止触发do_something();功能。唯一的例外是在窗口中使用粘滞键,当您键入“p”时不必保持“Ctrl”。
当然,如果你在keydown事件中而不是在keyup中激活你的函数,那么这一切都是正确的。根据您的功能,这可能不合适。
希望这有效。
答案 2 :(得分:0)
在keyup之前将绑定粘贴到粘贴上应该这样做。
$('#q').bind('paste',function(event) {
//user pasted text, there is not need to do_something();
//tried both of these approaches, none worked out.
event.stopPropagation();
event.stopImmediatePropagation();
});
$('#q').keyup(function(e){
do_something();
})