gpt4 book ai didi

javascript - 是否可以通过按 enter 从 HTML 表单中的一个控件移动到另一个控件?

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:57 25 4
gpt4 key购买 nike

尊敬的所有人,

我有一个 HTML 表单,其中包含不同的控件,例如文本框和复选框。我想在用户按下 ENTER 键时将焦点从一个控件移动到下一个控件,而不使用 tabindex 属性。

这可能吗?

最佳答案

您可以通过 Hook keypress 并查找 Enter 键,然后导航 DOM 以查找下一个字段来完成此操作。依稀是这样(live copy) :

window.onload = function() {

var form,
index;

// Get the form
form = document.getElementById('theForm')

// Hook the keypress event on all its inputs
for (index = 0; index < form.elements.length; ++index) {
hookEvent(form.elements[index], 'keypress', elementKeypressHandler);
}

// Our handler for keypresses
function elementKeypressHandler(event) {
var keyCode,
next,
tryFirst;

// Handle IE/standards variance
event = event || window.event;

// Get the keycode
keyCode = event.keyCode || event.which;

// If Enter...
if (keyCode == 13) {
// Find the next field; if we run out of fields, try
// from the beginning
tryFirst = true;
next = this.nextSibling;
while (next && (next.nodeType != 1 || next.tagName != "INPUT")) {
next = next.nextSibling;
if (!next && tryFirst) {
tryFirst = false;
next = this.parentNode.firstChild;
}
}

// If we have one, focus it
if (next && next !== this) {
next.focus();
}
}
}

// Handle IE vs. standards for DOM2 event hookup
function hookEvent(element, event, handler) {
if (element.addEventListener) {
element.addEventListener(event, handler, false);
}
else if (element.attachEvent) {
element.attachEvent("on" + event, handler);
}
else {
element["on" + event] = handler;
}
return element;
}
};​

题外话:如果您使用像 jQuery 这样的库,这些东西会很多容易。 , Prototype , YUI , Closure , 或 any of several others为您消除浏览器差异并使遍历 DOM 更容易。例如,在上面的例子中,我不得不考虑不同浏览器之间不少于 三个 的差异,并且我不得不使用循环来找到下一个(或第一个)要关注的元素, 跳过非元素节点。库将帮助您避免编写重复的代码,并专注于您真正想做的事情。

关于javascript - 是否可以通过按 enter 从 HTML 表单中的一个控件移动到另一个控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4757977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com