多部分jQuery验证

Ash*_*rlc 7 javascript forms validation jquery jquery-validate

我正在尝试分别验证表单的不同部分.不幸的是,表单是由CMS生成的,所以我的操作受到限制.

我尝试validate使用当前表单部分作为索引创建一个对象数组.即:

  //initialize validation
  validators = [
    $('#donation_amount').validate({ rules:{ amount: { required: true } } }),
    $('#personal_information').validate({ rules:{ Street: { required: true } } })
   ];
Run Code Online (Sandbox Code Playgroud)

并像这样切换到这些部分:

  $('#btn-next').click(function() {
    //if validation is true, show next page
    if (validators[curOrder].valid()) {
      var old = $('.active');
      var oldOrder = old.attr('data-order');
      var newOrder = parseInt(oldOrder) + 1;
      old.removeClass('active');
      $("[data-order='" + newOrder + "']").addClass('active');
      curOrder = newOrder;
    }else{
      console.log("invalid");
   }
});
Run Code Online (Sandbox Code Playgroud)

然而,验证总是返回true.

这是有问题的页面:https://salsa3.salsalabs.com/o/50388/p/salsa/donation/common/public/?donate_page_KEY = 8461

Tah*_*qui 1

当你自己编写一些 javascript 时,为什么还要使用 .validate 插件呢?单击时,只需检查输入的值(例如 $('#myInput').val().trim() == "")并针对每个输入显示/隐藏相应的错误 div。

此外,对于多部分验证,仅验证必填字段并继续应该执行的操作。

$('#btn-next').click(function() {
var amountValid = $('#donation_amount').val().trim() == '' ? false : true;
var infoValid = $('#personal_information').val().trim() == '' ? false : true;

if (amountValid && infoValid) {
  var old = $('.active');
  var oldOrder = old.attr('data-order');
  var newOrder = parseInt(oldOrder) + 1;
  old.removeClass('active');
  $("[data-order='" + newOrder + "']").addClass('active');
      curOrder = newOrder;
    }else{
      console.log("invalid");
    }
});
Run Code Online (Sandbox Code Playgroud)