【问题标题】:Submit form using JS hotkey?使用 JS 热键提交表单?
【发布时间】:2012-07-24 16:15:58
【问题描述】:

这是我当前的代码:

<select tabindex="2" id="resolvedformsel" name="resolved">
     <option selected="selected" value="yes">resolved</option>
     <option value="no">not resolved</option>
     <option value="mu">not a support question</option>
</select>
<input type="submit" value="Change" id="resolvedformsub" name="submit">

我想使用组合键(如 Ctrl+Alt+1)使选择“已解决”并立即执行“提交”。我正在为支持论坛进行此修改,使用热键标记已解决的线程会很方便。

我不包括 jQuery!它必须是纯 JS 解决方案。有什么想法吗?

换句话说:什么是 JS 相当于 jQuery 的 keypress/keydown?

【问题讨论】:

标签: javascript html css forms


【解决方案1】:

如果你有一个表格会更好,但你仍然可以使用:

window.addEventListener('keypress', function (event) {
    if (event.which == 13 && event.ctrlKey) { // Ctrl + Enter
        document.getElementById('resolvedformsel').options[0].selectected = true;
        document.getElementById('resolvedformsub').click();
    }
})

【讨论】:

  • 太棒了!我认为这会奏效,而且非常简单。到目前为止,它给了我document.getElementById("resolvedformsel").elements is undefined,但我想我可以很容易地找到解决方案:)
  • 如果您的表单包含这些元素,请使用 form.submit() 而不是 document.getElementById('resolvedformsub').click();
  • 它适用于点击,令人惊讶的是它不适用于submit();。错误:document.getElementById("resolved").submit is not a function。表单的 ID 为 #resolved。我不是 JS 大师,所以也许我做错了什么——我直接从 jQuery 开始(没有 JS 基础)。我想我现在可以用谷歌搜索一些解决方案 :) 非常感谢您的帮助!
  • 您确定表单的 id 为“已解析”吗?所有表单元素都有 .submit() 方法,我看到它可以有 id "resolvedform"
  • 是的:gyazo.com/3a3acb2b5d9b187b71818dc6dbe97cb1.png?1343118968 这不是一个大问题,因为它适用于click();,但可能是一些有趣的例外 (?)。我在屏幕截图上删除了action=""
【解决方案2】:

组合键并不容易,有些键是保留的。所以它可能不起作用。我会这样尝试:在 jQuery 源代码中检查它们是如何捕获事件对象的 metaKey 属性的。看看一些使用组合键处理事件的插件。希望这能给你一些“灵感”。

【讨论】:

  • 只是一个想法:抓住关键跟随并将其与超时结合起来。
  • 感谢您的建议!这是有用的答案:)
猜你喜欢
  • 2011-04-06
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 2018-11-22
相关资源
最近更新 更多