我正在使用jQuery,并希望用户在将数据输入搜索字段后开始搜索时可以按Enter键。
我正在使用以下代码:
$('#textSearch').keyup(function (event) {
if (event.keyCode == '13') {
doSearch();
}
return false;
});
它在Firefox和IE中完美运行,但在Safari中完全没有。当我在safari中输入并且这不是我想要的时候,表单正在提交。
添加onsubmit =“return false;”到表格有效,但不是一个选项,因为表格标签在asp.net页面的母版页上,我需要在其他页面上提交表格。
有没有办法在Safari中使用此功能?
编辑: 我还尝试只显示警告而不是doSearch()函数。警报显示正常,但之后表格正在提交。
答案 0 :(得分:4)
浏览器可能会因触发提交的事件而异。在这种情况下,Safari可能会在keydown活动上提交 你可以在不改变标记的情况下观察提交事件并取消它:
$('#the-id-of-the-form').submit( function( e ) {
e.preventDefault();
});
然后,您可以侦听keyup事件并按照现在的方式处理它。
答案 1 :(得分:3)
试试这个:
$('#textSearch').keyup(function (event) {
var key = event.keyCode || event.which;
if (key === 13) {
doSearch();
}
return false;
});
答案 2 :(得分:1)
添加防止摧毁
$('#textSearch').keyup(function (event) {
if (event.keyCode == '13') {
event.preventDefault();
doSearch();
}
return false;
});
答案 3 :(得分:0)
我使用“keydown”因为“keyup”对我不起作用。我还需要使用我在AJAX中添加的输入字段禁用此输入,因此“实时”。
您需要将“更改”处理程序绑定到该字段。此版本退出该字段(“模糊”)然后触发该字段的更改,然后触发更改。没有模糊,更改会被触发两次!
$('#textSearch').live('keydown', function(event) {
if(event.keyCode == 13)
{
$(event.target).blur();
$(event.target).change();
event.preventDefault();
return false;
}
}
);
答案 4 :(得分:0)
我使用“keydown”因为“keyup”对我不起作用。我还需要使用我在AJAX中添加的输入字段禁用此输入,因此“实时”。
您需要将“更改”处理程序绑定到该字段。此版本退出该字段(“模糊”)然后触发该字段的更改,然后触发更改。没有模糊,更改会被触发两次!
$('#textSearch').live('keydown', function(event) {
if(event.keyCode == 13)
{
$(event.target).blur();
$(event.target).change();
event.preventDefault();
return false;
}
});