下面的代码没有调用表单提交,请有人帮助识别代码中的问题。提前谢谢。
<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>