Javascript 为什么表格是';s onsubmit函数只调用一次?

Javascript 为什么表格是';s onsubmit函数只调用一次?,javascript,html,forms,dom-events,Javascript,Html,Forms,Dom Events,跟罐头上写的差不多。此代码段演示了问题: 功能检查(e){ log($('input[name=“myinput”]').val()); if($('input[name=“myinput”]”)。val()=“123”){ 返回true; }否则{ $('input[name=“myinput”]”)[0].setCustomValidity(“无效”); 返回false; } } 因为处于“无效”状态的表单(因为表单中的输入处于“无效”状态)不会提交 表单有效性的创建不允许在submit

跟罐头上写的差不多。此代码段演示了问题:

功能检查(e){
log($('input[name=“myinput”]').val());
if($('input[name=“myinput”]”)。val()=“123”){
返回true;
}否则{
$('input[name=“myinput”]”)[0].setCustomValidity(“无效”);
返回false;
}
}

因为处于“无效”状态的表单(因为表单中的输入处于“无效”状态)不会提交

表单有效性的创建不允许在
submit
事件中更改,因为正如您所注意到的,您不会得到任何新的
submit
。您必须在提交表单之前更改表单的有效性。通常,表单有效性会在每次输入时单独检查。从这里开始,你自己的口味。我建议在
blur
上检查每个输入的有效性:

$('input[name="myinput"]').on("blur", () => {
    // Do your checks and setCustomValidity depending on if is valid or not
});
这样,只有在所有输入都有效的情况下,您才会收到
submit
事件。顺便说一句,要使其工作,您必须在启动时将所有输入设置为无效状态,以避免在不接触任何输入的情况下进行空提交


另一种方法是在所有输入都为空时禁用submit按钮。为此,您还需要JavaScript并检查所有输入上的
更改
输入
事件。

@NenadVracar那么我能做什么?注册一个
onchange
处理程序,该处理程序在每次字段更改时重置自定义有效性?是的,这是一种方法@Tom.sooo,我的答案如何?我们在这里为你浪费空闲时间。至少给出一点反馈…:-(