Safari 中的 jQuery 键盘输入和“输入”
Posted
技术标签:
【中文标题】Safari 中的 jQuery 键盘输入和“输入”【英文标题】:jQuery keyup and 'enter' in Safari 【发布时间】:2011-04-20 11:54:49 【问题描述】:我正在使用 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() 函数。警报显示正常,但之后表单正在提交。
【问题讨论】:
【参考方案1】:浏览器可能会因哪个事件触发提交而有所不同。在这种情况下,Safari 可能会提交 keydown 事件。 您可以在不更改标记的情况下观察提交事件并将其取消:
$('#the-id-of-the-form').submit( function( e )
e.preventDefault();
);
然后您可以监听 keyup 事件并像现在一样处理它。
【讨论】:
【参考方案2】:试试这个:
$('#textSearch').keyup(function (event)
var key = event.keyCode || event.which;
if (key === 13)
doSearch();
return false;
);
【讨论】:
谢谢!我试过了,但没有任何区别。我还用更多细节更新了这个问题。【参考方案3】:添加阻止默认值
$('#textSearch').keyup(function (event)
if (event.keyCode == '13')
event.preventDefault();
doSearch();
return false;
);
【讨论】:
【参考方案4】:我使用“keydown”是因为“keyup”对我不起作用。我还需要使用我使用 AJAX 添加的输入字段禁用此输入,从而实现“实时”。
您需要将“更改”处理程序绑定到该字段。此版本退出字段(“模糊”)然后触发字段上的更改,然后触发更改。没有模糊,更改会触发两次!
$('#textSearch').live('keydown', function(event)
if(event.keyCode == 13)
$(event.target).blur();
$(event.target).change();
event.preventDefault();
return false;
);
【讨论】:
【参考方案5】:我使用“keydown”是因为“keyup”对我不起作用。我还需要使用我使用 AJAX 添加的输入字段禁用此输入,从而实现“实时”。
您需要将“更改”处理程序绑定到该字段。此版本退出字段(“模糊”)然后触发字段上的更改,然后触发更改。没有模糊,更改会触发两次!
$('#textSearch').live('keydown', function(event)
if(event.keyCode == 13)
$(event.target).blur();
$(event.target).change();
event.preventDefault();
return false;
);
【讨论】:
以上是关于Safari 中的 jQuery 键盘输入和“输入”的主要内容,如果未能解决你的问题,请参考以下文章
html 在iOS的safari中,html输入元素中的这一行属性将使数字键盘输出;在这种情况下,它也将强制最大 -
在 iOS Safari 中使用 iScroll 和输入时,键盘会将滚动条推到视口上方并卡住
有没有办法在 Safari(网络浏览器)上隐藏 iPad 键盘