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

Jus*_*tin 4 asp.net validation jquery 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>
Run Code Online (Sandbox Code Playgroud)

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

Cal*_*ebD 5

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

$.validator.messages = {
    required: '<%: Resources.Strings_ValidationMessages.SelectionRequired %>'
};
Run Code Online (Sandbox Code Playgroud)

或者您可以使用自己的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>"
    );
};
Run Code Online (Sandbox Code Playgroud)

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