2013-11-28 3 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

Почему он должен поймать его? Вы слушаете событие нажатия клавиши, но запускаете keydown. – 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

У вас есть 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("keypress", function (e) { ... 

По

input.bind("keydown", function (e) { ... 
Смежные вопросы