我有一个网站,有几个按钮可以打开不同的jQuery ui对话框。
其中一个对话框(ID为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
;会发生什么是keydown
事件侦听器按预期触发,但在执行后,#post_a_story
的click事件侦听器也会触发。以前,我使用keyup
代替keydown
,在这种情况下,当用户点击#post_a_story
和我的enter
时,会立即神秘地触发keyup
点击事件事件监听器从未触发过。如果我完全删除post_a_story
事件侦听器,则会打开另一个对话框。为什么enter
按键会触发不相关的click
事件?
请注意,如果用户点击approve_filter_item
按钮而不是点击enter
,则会按预期处理关键字。
答案 0 :(得分:0)
正如@bfavaretto指出的那样,.preventDefault()结束了这种奇怪的行为。我不知道为什么它首先发生。