考虑jQuery验证插件的这个应用程序:
(function($) {
'use strict';
$('form[data-behavior="validate"]').validate({
errorElement: 'span',
ignore: ':hidden, .select-dropdown',
normalizer: function(value) {
if (!value) value = '';
if ($(this).is('[data-currency-mask]')) {
return value.replace(/\$/g, '').replace(/,/g, '');
}
return value;
},
highlight: function(element) {
$(element).addClass('invalid');
$(element.form).find('label[for=' + element.id + ']').addClass('invalid');
},
unhighlight: function(element) {
$(element).removeClass('invalid');
$(element.form).find('label[for=' + element.id + ']').removeClass('invalid');
}
});
})(jQuery);
此自定义验证程序向元素及其标签添加/删除错误类"invalid"
。结果如下(使用Materialize.css):
highlight
和unhighlight
函数中有一些代码重复,我想消除它们;此外,我似乎可以使用errorClass
属性(参见https://jqueryvalidation.org/validate/),而不是在任何地方使用硬编码'invalid'
。
我已尝试在传递给errorClass: 'invalid'
的对象中设置.validate()
,然后在errorClass
和{{1}中使用'invalid'
代替highlight
方法,但这似乎不起作用。我该如何重构这段代码?
答案 0 :(得分:0)
我没有足够的声誉来发表评论,因为人们不会激发我的答案或者获得声誉所需的一切。
但是,我注意到的第一件事是
if (!value) value = '';
应该是
if (!value) { value = ''; }
也可以用
初始化 value = value || '';
或者,根据您使用的ECMA脚本的版本,您甚至可以保存一行代码并在参数中初始化
normalizer: function(value = '')
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters