【问题标题】:How do i get this script to focus an element on keydown/keypress?我如何让这个脚本将元素集中在 keydown/keypress 上?
【发布时间】:2026-01-31 18:15:01
【问题描述】:

如何让这个脚本工作?我希望它把 id 为“order_number”的元素集中在 ctrl 或 alt keypress/keydown 上。我确定我写错了,但我希望我不是很糟糕。

function setFocusToTextBox(field, evt) {
    if (evt.keycode === 17) {
        if (evt.preventDefault) {
            evt.preventDefault();
        } else if (evt.stopPropagation) {
            evt.stopPropagation();
        } else {
            evt.returnValue = false;
        }
        getElementById("order_number").focus();
        return false;
    } else {
        return true;
    }
}

【问题讨论】:

  • 如果您想检查这些密钥,请使用 evt.ctrlKey 和/或 evt.altKey。而getElementById("order_number").focus(); 应该是document.getElementById("order_number").focus();

标签: javascript forms element


【解决方案1】:

我根据评论中的建议清理了代码。

function setFocusToTextBox(evt) {
    if (evt.ctrlKey || evt.altKey) {
        if (evt.preventDefault)
        {
            evt.preventDefault(); //prevent the default action for the ctrl and alt keys.
        }
        document.getElementById("order_number").focus();
        return false;
    } else {
        return true;
    }
}

【讨论】:

  • 到目前为止这还没有奏效,我正在尝试不同的方法。你认为我应该把键码放回 ctrl 还是没关系?
  • 我需要一些东西来监听击键吗?
  • 您需要将keydown事件监听器绑定到文本框。 [element].addEventListener("keydown", setFocusToTextBox, false) 其中[element] 需要替换为对您的元素的引用。