Javascript Chrome与此JS崩溃

Javascript Chrome与此JS崩溃,javascript,jquery,html,Javascript,Jquery,Html,Chrome与此JS崩溃。 有一种形式有多重输入。JS代码在提交之前必须检查它们是否已填写。但成功之后,Chrome崩溃了 <script> $(document).ready(function(){ var form = $('form#add'); form.submit(function(){ var filledInputs = $('form#add input[value!=""]'); $('form#add input[valu

Chrome与此JS崩溃。 有一种形式有多重输入。JS代码在提交之前必须检查它们是否已填写。但成功之后,Chrome崩溃了

<script>
$(document).ready(function(){
    var form = $('form#add');
    form.submit(function(){
      var filledInputs = $('form#add input[value!=""]');
      $('form#add input[value=""]').css('border','solid 1px red');
      filledInputs.css('border','');
      if (filledInputs.length >= 9) {
          form.submit();
          return true;
      } else {
          return false;
      }
    });
});
</script>

$(文档).ready(函数(){
变量形式=$('form#add');
表单提交(函数(){
var filledInputs=$('form#add input[value!=“”]);
$('form#add input[value=”“]).css('border','solid 1px red');
css('border','');
如果(filledInputs.length>=9){
表单提交();
返回true;
}否则{
返回false;
}
});
});

当有
=9个
填充输入时,您的函数是无限递归的。在提交时,表单执行验证,如果验证通过,则再次调用submit以验证表单,依此类推


如果删除
表单,请提交()并返回
true
表单将正确提交。

稍微缩短代码会使问题变得明显:

form.submit(function(){
    form.submit();
})

这会导致无限递归,耗尽堆栈,并导致chrome中止脚本(或崩溃)。

您的表单已经提交,无需再次提交:

if (filledInputs.length >= 9) {
    // form.submit();
    return true; // return true is to continue with the form submission
} else {
    return false;
}
您可以这样做:

form.submit(function () {
    var filledInputs = $('form#add input[value!=""]');
    $('form#add input[value=""]').css('border', 'solid 1px red');
    filledInputs.css('border', '');
    return (filledInputs.length >= 9);
});

表单将根据输入字段验证提交。

您忘了问问题。什么意思是:“Chrome崩溃”
如果(filledInputs.length>=9)
导致无限循环。按原样反复提交表格。只需删除
表单.submit()应该可以使用。为什么要再次提交?顺便问一下,如果仍然使用$('form#add'),为什么要设置变量'form'?顺便说一句,应该是:$('add')谢谢。那么如何检查输入?