如何在JQuery的验证中本地化验证消息?

时间:2010-10-13 19:13:17

标签: asp.net jquery validation localization jquery-validate

是否存在本地化JQuery验证消息的标准做法?

通过声明我自己的ClassRules并引用它们而不是默认的ClassRules,我已经能够一起攻击。

我的代码。

<input class="localized-required" id="myTextInput" name="myTextInput" type="text" value="" />

<script language="javascript" type="text/javascript">
        jQuery(document).ready(function () {
            $.validator.addMethod("localized-required", $.validator.methods.required, '<%: Resources.Strings_ValidationMessages.SelectionRequired %>');

            $.validator.addClassRules(
            {
                "localized-required": { "localized-required": true }
            });

            jQuery("#myForm").validate();
        })
    </script>

我只是想看看是否有更好的方法。

2 个答案:

答案 0 :(得分:5)

您可以覆盖messages对象中的validator对象。

$.validator.messages = {
    required: '<%: Resources.Strings_ValidationMessages.SelectionRequired %>'
};

或者您可以使用自己的defaultMessage函数。

$.validator.prototype.defaultMessage = function(element, method) {
    var locale = magicFunctionToGetLocale();
    var message = $.validator.localizedMessages[locale][method];

    return this.findDefined(
        this.customMessage( element.name, method ),
        this.customMetaMessage( element, method ),
        // title is never undefined, so handle empty string as undefined
        !this.settings.ignoreTitle && element.title || undefined,
        message,
        "<strong>Warning: No message defined for " + element.name + "</strong>"
    );
};

在上面的示例中,$.validator.localizedMessages是在代码中其他位置创建的对象。标准验证插件没有localizedMessages对象。

答案 1 :(得分:2)

如果您需要,可以使用验证文件:

https://github.com/jzaefferer/jquery-validation/tree/master/src/localization

只需获取您需要的内容并引用页面中的.js文件。

<script type="text/javascript" src="localization/messages_XX.js"></script>