У меня есть веб-сайт с несколькими кнопками, открывающими разные диалоговые окна jQuery ui.Нажмите событие, открывающее неправильный диалог в IE
Внутри одного из этих диалогов (с идентификатором filter_story
) есть текстовое поле, в котором пользователь может вводить ключевые слова, которые я использую позже, чтобы фильтровать истории при опросе сервера. У меня есть настройка текстового поля, чтобы пользователь мог ввести несколько ключевых слов, нажав кнопку класса approve_filter_item
после ввода каждого элемента, или пользователь может просто нажать кнопку enter
между каждым ключевым словом.
// button to open the keyword filter list
$("#filter_stories").click(
function(){
$("#filter_dialog").dialog("open");
}
);
$(".approve_filter_item").click(function(){
[process the just inserted keyword and then put focus back on the textfield]
});
//listen for enter key when user's focus is on entering a new keyword
$(".new_filter_item").keydown(function (e) {
if (e.keyCode == 13) {
$($(this).parents("tr")[0]).find(".approve_filter_item").click();
}
});
// button to show the post story dialog form
$("#post_a_story").click(
function(){
$("#new_story_form").dialog("open");
}
);
Все работает точно так, как ожидалось, во всех версиях Chrome, FF и Safari. Тем не менее, я испытываю некоторое плохое поведение в IE.
Скажем, пользователь IE вводит ключевое слово в диалоговом окне #filter_stories
, а затем нажимает enter
; что происходит, это триггеры прослушивателя событий 3, как и ожидалось, но после того, как он запускает прослушиватель событий нажатия для #post_a_story
, также запускаются триггеры. Раньше я использовал keyup
вместо keydown
, и в этом случае клик-событие #post_a_story
таинственно запускалось сразу, когда пользователь нажал enter
, а мой keyup
прослушиватель событий никогда не запускался вообще. Если я удалю прослушиватель событий post_a_story
вообще, вместо этого откроется другое окно. Почему есть enter
нажатие клавиши, не связанное с click
событиями? Обратите внимание: если пользователь нажимает кнопку approve_filter_item
вместо нажатия enter
, ключевое слово обрабатывается так, как ожидалось.
Есть ли у вас слушатели для отправки события в элементе формы? Возможно, это то, что срабатывает. Вы предотвращаете поведение по умолчанию при нажатии ENTER? – bfavaretto
У меня не было ни одного слушателя в доме, и диалог открывался только в том. Тем не менее, возврат false из моего прослушивателя событий нажатия кнопки остановил событие от пузырей до некоторого невидимого слушателя в ie. Итак, @bfavaretto, если вы хотите отправить свой комментарий в качестве ответа, я был бы рад принять его. Кроме того, я хотел бы узнать, видели ли другие люди такое поведение. –