Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为表单验证使脚本更通用_Javascript - Fatal编程技术网

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});