Javascript:如何禁用提交按钮,直到所有字段都被验证?

Javascript:如何禁用提交按钮,直到所有字段都被验证?,javascript,function,button,submit,disabled-control,Javascript,Function,Button,Submit,Disabled Control,我有几个可以正常工作的验证函数,我想用简单的javascript(no jQuery,etc)为整个表单编写一个额外的验证,根据其他验证函数是否返回true或false禁用/启用提交按钮。我该怎么办 例如,对于我的主HTML,我有: <form id="form" method="POST"> <label class="form">Field 1</label><input type="text" name="input1" onkeyu

我有几个可以正常工作的验证函数,我想用简单的javascript(no jQuery,etc)为整个表单编写一个额外的验证,根据其他验证函数是否返回true或false禁用/启用提交按钮。我该怎么办

例如,对于我的主HTML,我有:

 <form id="form" method="POST">
      <label class="form">Field 1</label><input type="text" name="input1" onkeyup="validateInput1(); return false">
      <label class="form">Field 2</label><input type="text" name="input2" onkeyup="validateInput2(); return false">
      ...
      <button id="submit" type="submit" value="submit">Submit</button>
 </form>
现在我想写一个函数,如下所示:

function validateForm(){

    var submitButton = document.getElementById('submit');
    submitButton.disabled = true;

    /*If all other validation functions like validateInput1() returns true then submitButton.disabled = false*/
}

如何执行此操作?

将按钮关闭为禁用状态。为每个表单输入钩住
onchange
事件,然后让它检查
validateForm()
函数以查看所有表单是否有效。之后,如果它们都有效,则将submit按钮设置为enabled,否则将其设置为disabled

var-inputs=document.querySelectorAll(“#表单输入”);
var validateInput1=函数()
{
返回文档.getElementById('input1')。值!='';
}
var validateInput2=函数()
{
返回文档.getElementById('input2')。值!='';
}
var validateForm=函数(){
如果(!validateInput1()){
返回false;
}
如果(!validateInput2()){
返回false;
}
返回true;
}
对于(变量i=0,len=inputs.length;i

字段1
字段2
提交

如果没有jQuery,它将有点像PITA。您必须循环输入字段,并附加一个更改处理程序,然后让它检查
validateForm()
函数以查看所有表单是否有效。然后,如果它们都有效,将提交按钮设置为enabled,否则将其设置为disabled?我似乎无法让它工作。我有一个困难的时候,因为你的代码是如此不同于我最初的问题。我的代码中有onkeyup=“validateOption1();return false”,但您在代码中删除了它,这会弄乱我的脚本。另外,我的验证函数没有任何返回语句,因为我希望它们是不明确的函数。
function validateForm(){

    var submitButton = document.getElementById('submit');
    submitButton.disabled = true;

    /*If all other validation functions like validateInput1() returns true then submitButton.disabled = false*/
}