jQuery validate:在表单验证后调用一个函数

时间:2017-05-31 01:56:23

标签: jquery validation jquery-form-validator

我正在尝试调用一个可以保存表单的函数。

这是我的代码:

$('#save-form-datas').validate({
    rules: {
        ROO_Number: {
            required: true,
            minlength: 1,
            maxlength: 4
        }
    },
    submitHandler: function(form) {
        var formData = new FormData(form);
        saveFormDatas(form);
    }
});

但是当代码执行时它不起作用。

这是我想要在for验证后立即执行的函数的代码:

function saveFormDatas(form) {

    $.ajax({
        type : 'POST',
        data : form.serialize(),
        url  : 'assets/app/php/ajax/rooms_edit.php',
        success: function(responseText){
            var json = $.parseJSON(responseText);
            if(json.type=="success") {
                $('#status-message-saved.hide').removeClass('hide');

                if(json.return_url!="") { 
                    setTimeout(function(){ window.location.href = "app?q=" + json.return_url; }, 1000);
                }
            }
            if(json.type=="error") {
                $('#status-message-error.hide').removeClass('hide');
            }
        }
    });
}

但它不起作用,只是打开一个这样的新页面我已经通过$_GET表单(我的所有表单数据都在网址中)。

我需要这样做,因为我有超过100个表单,不能复制我的代码来保存表单。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

只需从验证程序中删除submitHandler并添加外部函数。

$('#save-form-datas').validate({
 rules: {
    ROO_Number: {
        required: true,
        minlength: 1,
        maxlength: 4
    }
 }
});

处理表格提交如下。

$('#save-form-datas').submit(function(event){
    event.preventDefault();
    if($('#save-form-datas').valid()){
        var form = $('#save-form-datas')[0];
        var formData = new FormData(form);
        saveFormDatas(form);
    }
});

或者你可以添加"返回false"如下所示...(这将阻止默认表单提交)

$('#save-form-datas').validate({
 rules: {
    ROO_Number: {
        required: true,
        minlength: 1,
        maxlength: 4
    }
 },
 submitHandler: function(form) {
    var formData = new FormData(form);
    saveFormDatas(form);
    return false;
 }
});

答案 1 :(得分:0)

我在我的代码中完成了这项工作

$('#save-form-datas').validate({
    rules: {
        ROO_Number: {
            required: true,
            minlength: 1,
            maxlength: 4
        }
    }
});

在这里你可以检查表格是否有效

if($('#save-form-datas').valid()){
      function myfunction()
}

myfunction {

$.ajax({
        type : 'POST',
        data : $('#save-form-datas').serialize(),
        url  : 'assets/app/php/ajax/rooms_edit.php',
        success: function(responseText){
            var json = $.parseJSON(responseText);
            if(json.type=="success") {
                $('#status-message-saved.hide').removeClass('hide');

                if(json.return_url!="") { 
                    setTimeout(function(){ window.location.href = "app?q=" + json.return_url; }, 1000);
                }
            }
            if(json.type=="error") {
                $('#status-message-error.hide').removeClass('hide');
            }
        }
    });
}

希望这有助于。

答案 2 :(得分:0)

jQuery Validate 公开了一个名为 showErrors 的选项参数,它接收一个映射和一个错误列表。您所要做的就是绑定到那里:

$("#myform").validate({
  showErrors: function(map,errors) {
    var validator = this;
    onValidate(validator);
    return validator.defaultShowErrors(map,errors);
  }
});

function onValidate(validator) {
  var isValid = validator.valid();
  // do something ...
}

此外,您可以在加载 Javascript 时强制验证一次,用于初始化和按钮等:$("#myform").data('validator').form();