[英]Defining global variable in - jquery.validate not working
我正在尝试在jquery验证插件中获取全局变量的值。
var typedWords = 1;
jQuery.validator.addMethod("wordCount",
function(value, element, params) {
typedWords = jQuery.trim(value).split(' ').length;
console.log(typedWords);
if (typedWords >= params[0] && typedWords <= params[1]) {
return true;
}
},
jQuery.format("Only {0} to {1} words allowed. You have entered " + typedWords + " words.")
);
但是jQuery.format("Only {0} to {1} words allowed. You have entered " + typedWords + " words.")
的typedWords的值jQuery.format("Only {0} to {1} words allowed. You have entered " + typedWords + " words.")
始终是undifined
。
我应该如何获得typedWords = jQuery.trim(value).split(' ').length;
. typedWords = jQuery.trim(value).split(' ').length;
?
谢谢。
查看控制台错误,它告诉我$.format
中的$.format
jquery.validate.js
已被弃用。 所以,简单地改变$.format
为$.validator.format
,或在您的情况...
jQuery.validator.format("Only {0} to {1} words allowed. You have entered " + typedWords + " words.")
( 不再需要将自定义消息包装在$.validator.format()
中,因为将其完全忽略不计。 )
它现在可以正常工作,除了typedWords
变量永远不会在您全局定义的1
之外更新。 这是因为初始化自定义方法后,唯一可以动态更改的自定义消息只有{0}
和{1}
处的参数。
演示: http : //jsfiddle.net/JRgN7/
但是,如果将typedWords
分配给另一个名为params[2]
参数,则可以在消息中使用{2}
,并且它会正确更新。
var typedWords = 1;
jQuery.validator.addMethod("wordCount", function (value, element, params) {
typedWords = jQuery.trim(value).split(' ').length;
params[2] = typedWords;
console.log(typedWords);
if (typedWords >= params[0] && typedWords <= params[1]) {
return true;
}
},
jQuery.validator.format("Only {0} to {1} words allowed. You have entered {2} words."));
演示: http : //jsfiddle.net/JRgN7/1/
现在我们可以使用params[2]
并完全消除全局typedWords
变量。 另外,也不必将自定义消息放在jQuery.validator.format()
。
jQuery.validator.addMethod("wordCount", function (value, element, params) {
params[2] = jQuery.trim(value).split(' ').length;
if (params[2] >= params[0] && params[2] <= params[1]) {
return true;
}
},
"Only {0} to {1} words allowed. You have entered {2} words.");
最终工作演示: http : //jsfiddle.net/JRgN7/3/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.