Javascript 为表单验证使脚本更通用
我有大量这种类型的脚本:Javascript 为表单验证使脚本更通用,javascript,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
// 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
部分通用,因为它是相同的
谢谢。您可以简单地创建一个函数,因为您的代码不依赖于任何外部状态,只作用于给定的参数
// 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
});
您可以使用原型(可能):
可以这样使用:
$('[data-target="xx"]').validate(some({ignore:"a"}));
$('[data-target="xx"]').some({ignore:"a"});
将一些添加到jquery中,使其更易于使用:
jQuery.fn.some=function(rules){
this.validate(some(rules));
};
可以这样使用:
$('[data-target="xx"]').validate(some({ignore:"a"}));
$('[data-target="xx"]').some({ignore:"a"});
非常感谢。它起作用了。有两个问题。为什么
onSubmit
不是onSubmit()
?第二个是对于var-input=$(这个)
,我得到了什么?谢谢。您正在将对函数的引用作为回调传递。Javascript通过引用传递所有对象和数组以节省内存,因此您可以重新使用onSubmit
函数。如果你有括号,你会叫它onSubmit()
不将函数传递给validate
回调此onSubmit
函数中的将设置为您正在验证的HTMLFormElement'[data target=“xx”]'
。如果您需要从已验证的元素中获取信息,或者希望找到与之相关的另一个元素,例如通知或错误消息。为了方便起见,它被包装为jQuery对象$(this)
。您可以执行类似于$input.css({background:'red'})
的操作,以及如何更改字段以进行验证?对于每个重复脚本,规则
部分应该也需要更改。只有submitHandler
才能解决问题。@qatari:是的。看看这些例子。您可以从proto中取出所有更改,并将其放入$(..).some({另外:0});