2013-11-28 4 views
-3

그때에 의해 체포해야 이벤트를 발생하기 위해 노력하고있어 바인딩 : I 버튼을 클릭하면이 jQuery 트리거가 작동하지 않는 이유는 무엇입니까?

var input = $("#input"); 
input.bind("keypress", function (e) { 
    //textarea.attr('name', textarea.textrange('get').position); 
    if (String.fromCharCode(e.keyCode) == '@') { 
     alert('@'); 
    } 
}); 
var e = jQuery.Event("keydown"); 
e.which = 64; // # Some key code value 

$("#press").click(function() { 
    $("#input").val($("#input").val() + '@') 
    $("#input").trigger(e); 
}) 

, 나는 문자를 삽입하고, 트리거가 발사되어 볼 수 있지만, 바인딩은 그것을 잡는다 결코 . 내가 도대체 ​​뭘 잘못하고있는 겁니까?

JSFiddle : http://jsfiddle.net/tt36q/1/

+2

으로

input.bind("keypress", function (e) { ... 

은 왜 그것을 잡으려고을 교체하려고? keypress 이벤트를 듣고 있지만 keydown을 트리거하고 있습니다. – JJJ

+0

은 적절한 이벤트로 잘 작동합니다. – charlietfl

+0

@ 주 아나 - 문자를 캡처 할 수 있도록 키 누르기를 들어야합니다 ...이 키 누르기를 click() 함수의 문자로 어떻게 트리거 할 수 있는지 알고 계십니까? – SB2055

답변

1

당신이 전달하는대로 구속 한 같은 이벤트를 트리거하고, 동일한 속성 (e.which)을 수신 할 수 있습니다

$("#input").on("keydown", function (e) { 
    if (e.which) === 64) { 
     alert('@'); 
    } 
}); 

var e = jQuery.Event("keydown"); 
e.which = 64; // # Some key code value 

$("#press").click(function() { 
    $("#input").val($("#input").val() + '@') 
    $("#input").trigger(e); 
}); 

FIDDLE

0

코드에 2 가지 문제가 있습니다. 먼저 keypress 이벤트를 바인딩하지만 이벤트는 keydown입니다.

또한 keyCode을 확인하지만 which을 변경하십시오.

변경에게 그와 그것을 작동 : http://jsfiddle.net/tt36q/4/ 어쩌면

var e = jQuery.Event("keypress"); 
e.keyCode = 64; // # Some key code value 
0

input.bind("keydown", function (e) { ... 
관련 문제