【发布时间】:2014-10-31 19:08:08
【问题描述】:
我正在尝试在 WYSIWYG Web Designer 10 中创建一个简单的提交表单,但我在使用 Enter 键时遇到了一个大问题。表单上有几个编辑框,我希望具有以下功能(通过 JavaScript): 1. Edit Box 上的 Enter 键不应该提交表单。 2. 编辑框上的 Enter 键应将焦点设置为以下元素(编辑框或提交按钮)。提交按钮是 tabIndex 顺序中的最后一个元素。 3. 要提交表单,用户必须: 要么点击提交按钮, 或在提交按钮获得焦点时按 Enter。 4。必须在任何浏览器中工作。
这是一个运行良好的 sn-p(它将焦点设置到下一个元素):
var elem = document.activeElement;
var tidx = +(elem.getAttribute('tabindex')) +1,
elems = document.getElementsByTagName('input');
for (var i=elems.length; i--;)
{
var tidx2 = elems[i].getAttribute('tabindex');
if (tidx2 == tidx) elems[i].focus();
}
我唯一的问题是输入键(keyCode)验证,它应该在代码之前更改焦点。我一直在 FF 32、PaleMoon 25(FF 克隆)、Chrome 38 和 IE 10 中进行测试。
非常感谢您提前抽出时间。
附:我是 JavaScript 的新手。我曾经与 MS Access 一起工作,类似的问题会在两分钟内得到解决。 我在这个简单的任务上花了几个小时,但没有运气。我已经尝试了很多我在网上找到的例子(包括 stackoverflow.com)。至于 event 处理(我正在尝试测试 keyCode),各种浏览器的行为不同。
【问题讨论】:
-
使用TAB键移动到下一个字段有什么问题?
-
您意识到采用这种方法会破坏您的用户已经熟悉的 HTML 表单的既定用户界面吗?除非您明确签署此实现并且用户要求它,否则请考虑不要这样做。顺便说一句,您确实需要将 HTML 添加到您的 sn-p 以使该代码以任何方式有意义。
-
@Weather Vane:用户一直按 Enter 而不是 Tab。
-
@David Thomas:是的,我想改变表单的行为。不仅是我 - 有很多线程在讨论同一个问题。 IE。应该有一个工具来改变 Enter 行为......只是用 9 替换 13。
-
经过一番探索:Firefox & PaleMoon 无法处理事件。 Chrome、IE、Opera 和 Safari 工作正常。如何处理 Firefox 及其克隆中的事件?
标签: javascript submit enter setfocus submit-button