【问题标题】:Is it possible to submit a form by triggering Enter with only javascript?是否可以通过仅使用 javascript 触发 Enter 来提交表单?
【发布时间】:2022-01-05 08:20:20
【问题描述】:

有一个没有按钮的表单和输入。您可以通过键入 Enter 发送消息。 表单有一个 id。

是否可以仅使用 JavaScript 触发或伪造 Enter-Key? (没有 jQuery,因为页面已经加载)。

我试过了:

e = jQuery.Event("keypress");
e.which = 13; //choose the one you want
document.querySelector("gui.frm_chat.tabs.tab_6.text.input#main").keypress().trigger(e);

但它没有 jQuery。

【问题讨论】:

  • 首先测试您是否拥有实际表格。例如使用const $form = $("[id^='gui.frm_chat.tabs.tab_6.text.input']");
  • 根据documentation.trigger 只是发送一个事件,因此您可以使用与您的 JQuery.Event 相同的参数(即您的 e 变量)调度一个事件。
  • 就像我说的那样。没有安装 jQuery。我尝试使用 javascript: (function(e, s) { e.src = s; e.onload = function() { jQuery.noConflict(); console.log('jQuery injection'); }; document.head.appendChild (e); })(document.createElement('script'), '//code.jquery.com/jquery-latest.min.js');但它并没有真正起作用。
  • 创建事件,例如new KeyboardEvent('keypress', { code: 'Enter', key: 'Enter', keyCode: 13, which: 13 }) 不受信任。因此,通过dispatchEvent 触发此类事件后不会出现预期的操作。

标签: javascript html forms


【解决方案1】:

我认为form.submit() 是您正在寻找的: https://www.w3schools.com/jsref/met_form_submit.asp

【讨论】:

  • 不,我已经尝试过了,但它只是打开一个新标签或重新加载页面。不过是个好主意!
【解决方案2】:

我想更好的解决方案是form.requestSubmit():https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/requestSubmit

【讨论】:

  • 好的,我试试
  • 抱歉,没用。似乎没有提交按钮:VM733:6 Uncaught TypeError: Failed to execute 'requestSubmit' on 'HTMLFormElement': The specified element is not a submit button.在 :6:12
  • 这有点奇怪,似乎是您正在使用的用户代理的实现错误。 requestSubmit() 可以接受您想要的提交按钮的参数,但它不需要。你用什么用户代理?
  • Mhhh,只是使用 chrome 浏览器的 http-request ......提交有点工作,或者它有反应,但不要发送它......但这有点帮助我知道在哪里调试!
  • 已经在后台点击“回车”发送了。但是不点击 Enter 怎么能伪造呢?
猜你喜欢
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 2011-12-13
  • 2020-05-04
  • 2015-07-14
  • 2011-02-17
相关资源
最近更新 更多