我正在尝试触发一个应该被绑定捕获的事件:
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/
答案 0 :(得分: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);
});
答案 1 :(得分:0)
您的代码存在2个问题。首先,您绑定了keypress
个活动,但您的活动是keydown
。
另外,您检查keyCode
,但更改了which
。
更改它们并运作:http://jsfiddle.net/tt36q/4/
var e = jQuery.Event("keypress");
e.keyCode = 64; // # Some key code value
答案 2 :(得分:0)
也许尝试替换
input.bind("keypress", function (e) { ...
通过
input.bind("keydown", function (e) { ...