繁体   English   中英

定义全局变量-jquery.validate不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM