- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在页面上有一些文本框,我想在用户按下其中任何一个时输入一个链接。
我可以使用 javascript 轻松捕获输入按钮(通过在 event.keyCode
和 event.which
中查找 13),但是当浏览器自动完成时我遇到了一个问题功能启动并建议用户可能想要输入的内容。我们发现用户经常按 enter 键接受浏览器的建议,而不是按 tab 键。这会使用户感到困惑,因为会立即单击链接,而他们仍打算在其他一些字段中输入文本。
我知道在这里使用表单和提交按钮会更好,但出于各种原因这不切实际。
我正在使用 jQuery,所以请随意提供 jQuery 解决方案。
最佳答案
在接受的答案中使用 tuanvt 的想法,我编写了一个 jQuery 插件来完成这项工作。
我跟踪用户何时按下向上键、向下键、向上翻页键和向下翻页键,以判断他们何时处于自动完成框中。所有其他键都表示他们已经离开了。
我确保我们只将这些规则应用于文本框:所有其他输入元素都正常运行。
Opera 已经很好地完成了我想要实现的目标,因此我不会在该浏览器中强制执行我的规则 - 否则用户将不得不按两次 enter。
在 IE6、IE7、IE8、Firefox 3.5.5、Google Chrome 3.0、Safari 4.0.4、Opera 10.00 中测试。
它在 jquery.com 上作为 SafeEnter plugin 可用。 .为方便起见,1.0版本代码如下:
// jQuery plugin: SafeEnter 1.0
// http://plugins.jquery.com/project/SafeEnter
// by teedyay
//
// Fires an event when the user presses Enter, but not whilst they're in the browser's autocomplete suggestions
//codesnippet:2e23681e-c3a9-46ce-be93-48cc3aba2c73
(function($)
{
$.fn.listenForEnter = function()
{
return this.each(function()
{
$(this).focus(function()
{
$(this).data('safeEnter_InAutocomplete', false);
});
$(this).keypress(function(e)
{
var key = (e.keyCode ? e.keyCode : e.which);
switch (key)
{
case 13:
// Fire the event if:
// - we're not currently in the browser's Autocomplete, or
// - this isn't a textbox, or
// - this is Opera (which provides its own protection)
if (!$(this).data('safeEnter_InAutocomplete') || !$(this).is('input[type=text]') || $.browser.opera)
{
$(this).trigger('pressedEnter', e);
}
$(this).data('safeEnter_InAutocomplete', false);
break;
case 40:
case 38:
case 34:
case 33:
// down=40,up=38,pgdn=34,pgup=33
$(this).data('safeEnter_InAutocomplete', true);
break;
default:
$(this).data('safeEnter_InAutocomplete', false);
break;
}
});
});
};
$.fn.clickOnEnter = function(target)
{
return this.each(function()
{
$(this)
.listenForEnter()
.bind('pressedEnter', function()
{
$(target).click();
});
});
};
})(jQuery);
关于javascript - 捕获回车键,但在选择浏览器的自动完成建议时不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1648993/
我在一个网站上有一个非常简单的登录脚本,它只使用 1 个简单的密码,而且它可以满足我的需要。问题是,它仅在单击“登录”字样时有效。我需要它做的是在按下 Enter 键时也能工作。这是代码:
在我的应用程序中,我有一个全局搜索字段,用于过滤列表中的数据,列表将有多个列。从其他组件设置过滤器值(设置为输入值)它正在发生,但我必须在输入上触发手动键盘事件(输入键)操作。 我尝试使用 viewC
在我的应用程序中,我使用的是 Tinymce。这是我的问题。 场景一 1) 我有这样风格的段落 Paragraph with some content. 当我将光标放在段落末尾并按下回车键时,它会像这
我有一个包含多个下拉列表和一个文本字段以及一个按钮的表单... 当我单击按钮时,会调用一个 ajax 函数...然后 ajax 会调用一个从 mysql 数据库获取结果的 php 函数... 问题是我
我想写一个程序在每句话之后做一个处理。像这样: char letter; while(std::cin >> letter) { if(letter == '\n') { // her
我在某处找到了一个非常适合我的自动完成脚本,但有一件事我不知道如何更改。当您单击下拉列表中的某些内容时,它不会提交此字符串,您必须单击以选择该字符串,然后单击提交按钮或按回车键。我希望此下拉菜单自动完
我在几周前开始使用 Xamarin Studio,但找不到下一个问题的解决方案:创建了一个包含序列号的编辑文本。我想在按下 Enter 后运行一个函数。它工作正常,当我按 Enter 时,函数运行没有
在 Android 和 iOS 中,可以将 keyboard 的 enter/return 键更改为例如“Go”按钮(和其他选项)。 在顶部上,我们可以在两个系统上看到常规的“返回”按钮,这是您在 A
具体代码如下所述: ? 1
我知道如何使用事件来测试何时按下某个键,但在 C 语言中我从来不知道该怎么做。 我真正想要的是一个“KeyListener”,它监听Up、Down、Left 和Right 方向键。我需要它在 Linu
我使用回车键从 v-textarea 输入数据,结果如下 Hello\nWorld 在默认或 rawHtml 不工作的情况下在 v-data-table 中呈现此内容 {{ props.it
我是一名优秀的程序员,十分优秀!