jQuery 使用 jquery 验证插件的智能向导 v4 步骤验证

jQuery Smart Wizard v4 Step Validaton using jquery validation plugin

在这里,我在表单中使用 jQuery 智能向导 v4,共有三个步骤,每个步骤都有一些输入字段。我的问题是,我只需要在进入下一步之前验证每个字段。

HTML 来自我的表格是类似这样的东西:

<form class="regform" action="" method="post" id="addNew_user">
  <div id="Regwizard">
    <ul>
      <li class="wizard-progressbar"></li>
      <li><a href="#step-1">Information</a></li>
      <li><a href="#step-2">Login</a></li>
      <li><a href="#step-3">Permissions</a></li>
    </ul>

    <div class="px-2 py-2">
      <div id="step-1">
        <h4>Enter the following user information</h4> 
        
        <div id="form-step-0">
          <div class="form-group">
            <label for="name">Name:</label>
            <input type="text" name="name" class="form-control" required />
          </div>
          <div class="form-group">
            <label for="name">Email:</label>
            <input type="email" name="email" class="form-control" required />
          </div>
        </div>
      </div>

      <div id="step-2">
        <h4>Enter the following login information</h4> 
      
        <div id="form-step-1">
          <div class="form-group">
            <label for="username">Username:</label>
            <input type="text" name="username" class="form-control" required />
          </div>
          <div class="form-group">
            <label for="name">Password:</label>
            <input type="password" name="password" class="form-control" required />
          </div>
        </div>
      </div>

      <div id="step-3" class="pt-0">
        <h4>Check the boxes below to access modules.</h4> 

        <div id="form-step-1">
          <div class="form-group">
            <input type="checkbox" name="module" value="1" /> Module Name
            <input type="checkbox" name="module" value="2" /> Module Name
          </div>
        </div>
      </div>
    </div>
  </div>
</form>

这是我在 jQuery 中尝试的方式:

$('#userRegwizard').smartWizard({
  theme: 'circles',
  useURLhash: false,
  showStepURLhash: false,
  autoAdjustHeight: true,
  transitionSpeed: 150,
  toolbarSettings: {
    toolbarPosition: 'bottom', 
    toolbarButtonPosition: 'right',
    showNextButton: false,
    showPreviousButton: false, 
    toolbarExtraButtons: [
      $('<div class="loader mr-3 d-none"><i class="fa fa-spinner fa-spin text-blue fa-2x"></i></div>'),
      $('<button class="btn btn-outline-secondary sw-btn-prev radius-l-1 mr-2px"><i class="fa fa-arrow-left mr-15"></i> Previous</button>'),
      $('<button class="btn btn-outline-primary sw-btn-next sw-btn-hide radius-r-1">Next <i class="fa fa-arrow-right mr-15"></i></button>'),
      $('<button class="btn btn-green sw-btn-finish radius-r-1 regThisUser"><i class="fa fa-check mr-15"></i> Submit</button>')
    ]
  }
}) 

.on("showStep", function(e, anchorObject, stepNumber, stepDirection) {

})

$('#addNew_user').validate({
  errorElement: 'span',
  errorClass: 'form-text form-error text-danger-m2',
  focusInvalid: false,
  ignore:  "",
  rules: {
    email: {
      email: true
    },          
    username: {
      required: true,
    },
    password: {
      required: true,
      minlength: 5
    },
    password_conform: {
      required: true,
      minlength: 5,
      equalTo: "#password"
    }
  }
}) 

$('#userRegwizard').on("leaveStep", function(e, anchorObject, stepNumber, stepDirection) {
  var elmForm = $("#form-step-" + stepNumber);
  if (stepDirection == 'forward' && elmForm) {
    if ($('#addNew_user').valid()) {
        return true
    } else {
        return false
    }
  }
  //return true;
})

但是这个 js 代码对我不起作用。这意味着我无法进入下一步,但如果我从 leaveStep 方法中删除验证码,它就会进入下一步。有人可以帮我解决这个问题吗?

ignore:  "",

为什么将 ignore 设置为“无”?这意味着插件将忽略任何内容并验证所有内容。

因此,当您调用 .valid() 时,它会验证您表单上的每一个输入,即使是您看不到的其他步骤中的空输入...这就是您被卡住的原因。

完全删除 ignore 选项以恢复忽略隐藏输入并仅验证显示内容的默认行为。