Проблема события нажатия клавиши jQuery - PullRequest
0 голосов
/ 26 ноября 2009

У меня есть функция (filterLeads), которую я хочу вызвать как при удалении поля формы от (размытие), так и при нажатии клавиши ввода в поле формы.

$('#filter input, #filter select').blur(filterLeads);
$('#filter input, #filter select').keypress(function(e){if(e.which == 13) {filterLeads();}});

Размытиеработает правильно, но у меня возникла проблема с событием нажатия клавиши.Событие, по-видимому, не вызывается, если что-то не происходит до вызова filterLeads ();например:

$('#filter input, #filter select').keypress(function(e){if(e.which == 13) {alert(e.which);filterLeads();}});

Это правильно вызывает filterLeads () после подтверждения предупреждения (который показывает правильный код ключа).

Есть идеи?(Браузер FF 3.0)

Ответы [ 3 ]

2 голосов
/ 26 ноября 2009

Я не уверен, почему вы ориентируетесь только на FF ... но вы также должны включить все браузеры, не поддерживающие FF , используя e.keyCode. Также keypress не может быть лучшим событием для использования согласно этой информации .

Попробуйте что-то вроде этого:

$("#filter input, #filter select").keyup(function(e){
 var key = (e.which) ? e.which : e.keyCode;
 if( key == 13 ){ filterLeads(e) }
});
1 голос
/ 26 ноября 2009

Просто попробуйте: вы должны return false; из анонимной функции, потому что в противном случае форма (если она есть), содержащая поля, будет отправлена, и страница будет перезагружена.

Если filterLeads ожидает событие как параметр, не забудьте написать: filterLeads(e).

А если больше ничего не поможет: Огонь blur():

$('#filter input, #filter select').keypress(function(e){$(e.target).blur();});

(jQuery-fied, поскольку могут быть прикреплены пользовательские события jQuery).

0 голосов
/ 26 ноября 2009

просто добавьте e.preventDefault(); в ваш обработчик событий, например:

  $('#filter input, #filter select').keypress(function(e){if(e.which == 13) {filterLeads(); e.preventDefault(); }});
...