使脚本更通用于表单验证

时间:2017-05-31 13:09:26

标签: javascript

我有大量此类脚本:

// xx is the module name and will be different
$('[data-target="xx"]').validate({
    ignore: '',
    rules: {
        ORI_Text: {
            required: true
        }
    },
    submitHandler: function(form) {
        var formData = new FormData(form);
        saveFormDatas(form);
        return false;
    }
});

如何使submitHandler部分对我的所有验证脚本都通用,因为它是相同的?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以简单地创建一个函数,因为您拥有的代码不依赖于任何外部状态,只对给定的参数起作用。

// this is now abstracted and you can pass it as the callback to many validations.
function onSubmit(form) {
  var $input = $(this) // if you need a reference to the validated element
  var formData = new FormData(form);
  saveFormDatas(form);
  return false;
}
$('[data-target="xx"]').validate({
    ignore: '',
    rules: {
        ORI_Text: {
            required: true
        }
    },
    submitHandler: onSubmit // the function is passed by reference
});

答案 1 :(得分:0)

您可以使用原型设置(可能):

var someproto={
ignore: "",
rules: {
    ORI_Text: {
        required: true
    }
},
submitHandler: function(form) {
    var formData = new FormData(form);
    saveFormDatas(form);
    return false;
}
}

function some(rules){
  return Object.assign(Object.create(someproto),rules);
}

可以这样:

$('[data-target="xx"]').validate(some({ignore:"a"}));

部分放入jquery使其更易于使用:

jQuery.fn.some=function(rules){
 this.validate(some(rules));
};

可以这样:

$('[data-target="xx"]').some({ignore:"a"});