将 Jquery 验证插件与 Dropzone.js 一起使用 - 我想禁用提交,除非 valid()

Using Jquery Validation Plugin with Dropzone.js - I want to disable submit unless valid()

这是相关的 dropzone.js 脚本:

$(document).ready(function () {
  var dropzone3;
  Dropzone.autoDiscover = false;
  dropzone3 = new Dropzone('#dropform3', {
    maxFiles: 6,
  });
  $('#item-submit').click(function(e) {
    e.preventDefault();
    e.stopPropagation();
    if (dropzone3.getQueuedFiles().length > 0) {
      return dropzone3.processQueue();
    } 
    else {
      return $('#dropform3').submit();
    }
  }); 

我的表单使用 dropzone.js 作为图像。我目前有 Jquery 验证插件在文本输入上正常工作,但我想在输入有任何错误时阻止提交表单。

这是我的提交按钮的代码:

<input type="submit" name="commit" value="Upload" id="item-submit" class="btn btn-default photoform">

这是验证脚本:

$('form#dropform3').validate({
  errorElement: "div",
  rules: { 
    'photo[title]':             {required: false, maxlength: 30},
    'photo[tag_list]':          {required: false, taglength: 20}
  }
});

我尝试创建一个 if statement 来禁用按钮但没有成功,使用:

var isValid = $('form#dropform3').valid();
var dropbtn = $('#item-submit')
if (!isValid) {
  dropbtn.prop("disabled", true);                  
}

var isValid = $('form#dropform3').valid();
var dropbtn = $('#item-submit')
if (!isValid) {
  dropbtn.css("pointer-event", "none");                  
}

然而,根据 --

when using a type="submit", your click handler is not needed because the click is automatically captured by the plugin. Also, in that case, you would use the submitHandler option to contain any code to run when the form is valid.

我曾短暂地尝试将 $('#item-submit').click(function(e) 移动到 submitHandler 中,但没有成功,但收到了 dropzone3 未定义的错误。我不知道如何组合脚本。

看起来我通过移动解决了这个问题

if ($('form#dropform3').valid()) {

进入点击功能:

$('#item-submit').click(function(e) {
e.preventDefault();
e.stopPropagation();
if ($('form#dropform3').valid()) {});
}