[英].click() on hidden input button doesn't work (undefined)
我花了几个小时阅读了无数的 stackoverflow,但我无法让它工作。
我有一个表单(Wordpress 中的 Caldera 表单),它有一个提交按钮(实际上它是一个输入标签)。 通过 JS,我添加了一个事件监听器,因为我想将表单数据备份到我的数据库中。 事件侦听器行:
document.querySelector(".submit-permanently").addEventListener("click", handleIorSaveClick);
handleIorSaveClick function 做得很好,到目前为止一切都很好。 但是,它现在不再提交表单。 尽管我没有在任何地方包含“防止默认”声明。 它只是调用我的 handleIorSaveClick function (它具有数据库的魔力),仅此而已。 表单不再提交。
正因为如此,我想到了放置一个看起来像提交按钮的假按钮,同时使真正的提交按钮不可见。 如果用户单击假按钮,则事件侦听器正在调用 handleIorSaveClick function 并从那里我想在数据库魔术完成后自动单击“真实”提交按钮。
为此,我包含了这三行代码:
document.querySelectorAll('.real-submit')[0].style.visibility = "visible";
document.querySelectorAll('.real-submit')[0].style.display = "inline";
document.querySelectorAll('.real-submit')[0].click();
奇怪的是,前两行正在执行:按钮变得可见。 但是(在我的脑海中)应该模拟用户单击该按钮以实际提交表单的第三行不会发生。 我什至可以 select 使用document.querySelectorAll('.real-submit')[0]的 chrome 开发控制台中的按钮,但这给了我一个未定义的错误:document.querySelectorAll('.real-submit')[0]。点击();
谁能帮我告诉我为什么 the.click() 没有做任何事情或告诉我为什么事件侦听器首先阻止表单提交?
您可以做两件事,在您的第一种方法中,在不制作假提交按钮的情况下,在 handleIorSaveClick() function 结束时,从“.submit-permanently”按钮取消绑定事件侦听器,然后调用
document.querySelectorAll('.real-submit')[0].click();
或者在你的第二种情况下,而不是
document.querySelectorAll('.real-submit')[0].click();
这样做:
document.getElementById("myForm").submit();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.