2012-10-06 2 views
0

사용자가 textarea # q에 someting을 입력하면 do_domething() 함수가 호출됩니다. 사용자가 입력하는 대신 텍스트를 붙여 넣으면 do_something() 함수를 사용하지 않아야합니다. 어떤 아이디어?사용자가 텍스트 영역에 무언가를 붙여 넣을 때 keyUp 이벤트 방지

$('#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(); 
}); 

답변

1

사용자가 마우스 오른쪽 버튼을 클릭하고 상황에 맞는 메뉴를 사용하여 텍스트 영역에 붙여 넣으면 귀하는 훌륭합니다. 따라서 "Ctrl + P"를 사용하여 텍스트 영역에 붙여 넣는 사용자의 문제가 해결됩니다. 키 코드를 캡처하고 키 콤보를 누르면 기능을 건너 뛸 수 있습니다. 이것을 시도하십시오 :

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"이 true로 설정되어 do_something()이 실행되지 않습니다. 기능. 이것에 대한 유일한 예외는 "p"를 타이핑 할 때 "Ctrl"키를 누를 필요가없는 창에서 고정 키를 사용하는 것입니다.

이 모든 것은 키 업보다는 keydown 이벤트에서 함수를 실행하는 것이 좋습니다. 기능에 따라 적절하지 않을 수 있습니다.

희망 사항.

+0

지금까지 가장 좋은 방법은 아이디어를 제공해 주셔서 감사합니다! – andufo

+0

문제 없습니다. 다행 당신을 위해 일합니다. – War10ck

+0

이것을 읽는 사람들에게'event.ctrlKey'는 이벤트 객체의 필드입니다.이 객체는 컨트롤이 눌려지고 있는지를보다 신뢰성있게 결정해야합니다. –

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 함수의 이벤트 처리기를 별도로 사용하십시오.

0

키 업 전에 붙여 넣기 할 바인드를 첨부해야합니다.

$('#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(); 
}) 
관련 문제