2013-11-28 36 views
-3

我想大火,然后,通过被捕获的事件有约束力:为什么这个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

它为什么要抓住它?您正在监听按键事件,但触发了按键事件。 – JJJ

+0

正常工作 – charlietfl

+0

@Juhana - 我需要听按键,这样我才能捕捉到角色......你知道我怎么能用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

有两个问题与您的代码。首先,您绑定了keypress事件,但您的事件是​​。

此外,您检查keyCode,但更改which

改变那些和它的工作:http://jsfiddle.net/tt36q/4/

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

也许尝试更换

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

通过

input.bind("keydown", function (e) { ... 
相关问题