Safari 中的 jQuery keyup 和 'enter'

标签 jquery safari onkeyup

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

我使用以下代码:

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

它在 Firefox 和 IE 中运行完美,但在 Safari 中则完全不行。发生的情况是,当我在 Safari 中按 Enter 键时正在提交表单,但这不是我想要的。

添加 onsubmit="return false;"表单可以工作,但不是一个选项,因为表单标记位于 asp.net 页面的母版页上,并且我需要在其他页面上提交表单。

是否有办法在 Safari 中也能使用此功能?

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

最佳答案

浏览器对于触发提交的事件可能有所不同。在这种情况下,Safari 可能会在 keydown 事件上提交。
您可以在不更改标记的情况下监视提交事件并取消它:

$('#the-id-of-the-form').submit( function( e ) {
    e.preventDefault();
});

然后您可以监听 keyup 事件并像现在一样处理它。

关于Safari 中的 jQuery keyup 和 'enter',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3850212/

相关文章:

javascript - API 上的 jQuery 不会自动绑定(bind)

javascript - BxSlider 轮播——一一变化

css - 在 safari/chrome 中打印 css 背景?

javascript - 当用户停止或暂停输入时,仅在 onkeyup 下调用一次方法

javascript - 无法用js调用函数

jquery 移动数据主题不工作

jquery - 将鼠标悬停在 <an> 元素上后会被阻止并出现警告框

javascript - 欺骗用户代理的 Safari 扩展?

safari 浏览器的 css 错误

jquery - 当用户在 jquery 中按 Enter 键时将 <br/> 添加到文本框