使用addEventListener调用表单提交



下面的代码没有调用表单提交,请有人帮助识别代码中的问题。提前谢谢。

<html>
<body>
<form id="form" name="form">
<select name='lstToggleDetails' id='lstToggleDetails' onchange="changeDetailMode1()">
<option value="default">Default</option>
<option value="details">Details</option>
</select>
<input type="submit" value="Register" style="display: none;" >
</form>
<!--Javascript-->
<script>
function changeDetailMode1()
{
var form = document.getElementById('form')
form.addEventListener('submit',function(event){
event.preventDefault()
console.log("in submit");

})
if (document.getElementById("lstToggleDetails").value == "details")
{
console.log("submitting form");
const form1 = document.getElementById("form");
form1.submit();
}
}
</script>
</body>
</html>

当您调用.submit():时

此方法与激活表单的提交类似,但不完全相同。然而,当直接调用此方法时:

没有引发提交事件特别是,表单的onsubmit事件处理程序没有运行不触发约束验证。

如果没有submit事件,通过form.addEventListener('submit'附加的任何内容都不会运行。

请改用.requestSubmit可以取消。

您可能还应该无条件地添加提交处理程序,而不是每次<select>更改时都添加。

const form = document.getElementById('form')
form.addEventListener('submit', function(event) {
event.preventDefault()
console.log("in submit");
})
function changeDetailMode1() {
if (document.getElementById("lstToggleDetails").value === "details") {
console.log("submitting form");
form.requestSubmit();
}
}
<form id="form" name="form">
<select name='lstToggleDetails' id='lstToggleDetails' onchange="changeDetailMode1()">
<option value="default">Default</option>
<option value="details">Details</option>
</select>
<input type="submit" value="Register" style="display: none;">
</form>

最新更新