jQuery keyup和Safari中的'enter'

时间:2010-10-03 14:51:20

标签: jquery safari onkeyup

我正在使用jQuery,并希望用户在将数据输入搜索字段后开始搜索时可以按Enter键。

我正在使用以下代码:

        $('#textSearch').keyup(function (event) {
            if (event.keyCode == '13') {
                doSearch();
            }
            return false;
        });

它在Firefox和IE中完美运行,但在Safari中完全没有。当我在safari中输入并且这不是我想要的时候,表单正在提交。

添加onsubmit =“return false;”到表格有效,但不是一个选项,因为表格标签在asp.net页面的母版页上,我需要在其他页面上提交表格。

有没有办法在Safari中使用此功能?

编辑: 我还尝试只显示警告而不是doSearch()函数。警报显示正常,但之后表格正在提交。

5 个答案:

答案 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;
  }
 });