jQueryvalidation:更改默认错误消息
有没有一种简单的方法来更改jQueryvalidation插件中的默认错误值?
我只是想重写错误信息对我的应用程序更个人化 – 我有很多领域,所以我不想单独设置字段x的消息…我知道我可以做到这一点!
将此代码添加到validation插件后包含的单独文件/脚本中,以覆盖消息,随意编辑:)
jQuery.extend(jQuery.validator.messages, { required: "This field is required.", remote: "Please fix this field.", email: "Please enter a valid email address.", url: "Please enter a valid URL.", date: "Please enter a valid date.", dateISO: "Please enter a valid date (ISO).", number: "Please enter a valid number.", digits: "Please enter only digits.", creditcard: "Please enter a valid credit card number.", equalTo: "Please enter the same value again.", accept: "Please enter a value with a valid extension.", maxlength: jQuery.validator.format("Please enter no more than {0} characters."), minlength: jQuery.validator.format("Please enter at least {0} characters."), rangelength: jQuery.validator.format("Please enter a value between {0} and {1} characters long."), range: jQuery.validator.format("Please enter a value between {0} and {1}."), max: jQuery.validator.format("Please enter a value less than or equal to {0}."), min: jQuery.validator.format("Please enter a value greater than or equal to {0}.") });
您可以在validation呼叫中指定自己的消息。 从Validation插件文档( http://jquery.bassistance.de/validate/demo/milk/ )中的Remember the Milkregistry单中提取并缩写这个代码,您可以轻松地指定自己的消息:
var validator = $("#signupform").validate({ rules: { firstname: "required", lastname: "required", username: { required: true, minlength: 2, remote: "users.php" } }, messages: { firstname: "Enter your firstname", lastname: "Enter your lastname", username: { required: "Enter a username", minlength: jQuery.format("Enter at least {0} characters"), remote: jQuery.format("{0} is already in use") } } }
用于validation(…)的完整API: http : //jqueryvalidation.org/validate
这对我工作:
$.validator.messages.required = 'required';
这对我工作:
// Change default JQuery validation Messages. $("#addnewcadidateform").validate({ rules: { firstname: "required", lastname: "required", email: "required email", }, messages: { firstname: "Enter your First Name", lastname: "Enter your Last Name", email: { required: "Enter your Email", email: "Please enter a valid email address.", } } })
由于我们已经在使用JQuery,所以我们可以让页面devise者添加自定义消息给标记而不是代码:
<input ... data-msg-required="my message" ...
或者,在所有字段上使用单个短data-msg属性的更通用的解决scheme:
<form id="form1"> <input type="text" id="firstName" name="firstName" data-msg="Please enter your first name" /> <br /> <input type="text" id="lastName" name="lastName" data-msg="Please enter your last name" /> <br /> <input type="submit" /> </form>
然后代码包含这样的东西:
function getMsg(selector) { return $(selector).attr('data-msg'); } $('#form1').validate({ // ... messages: { firstName: getMsg('#firstName'), lastName: getMsg('#lastName') } // ... });
另一种可能的解决scheme是在字段上循环,向每个字段添加相同的错误消息。
$('.required').each(function(index) { $(this).rules("add", { messages: { required: "Custom error message." } }); });
除了更改插件源代码外,还可以使用下载本地化文件夹中的格式包含其他js文件,并在加载validation.js文件后包含该文件
jQuery.extend(jQuery.validator.messages, { required: ..., maxlength: jQuery.validator.format(...), ... });
最新的版本有一些很好的内联的东西,你可以做的。
如果它是一个简单的input字段,你可以像这样添加属性data-validation-error-msg
–
data-validation-error-msg="Invalid Regex"
如果你需要更重一点的东西,你可以使用一个variables,将所有的值传递给validate函数来完全自定义事物。 参考这个链接的全部细节 – https://github.com/victorjonsson/jQuery-Form-Validator#fully-customizable
@Josh:您可以使用资源包中的已翻译消息来扩展您的解决scheme
<script type="text/javascript"> $.validator.messages.number = '@Html.Raw(@Resources.General.ErrorMessageNotANumber)'; </script>
如果你把这个代码部分放到你的_Layout.cshtml(MVC)中,它可以用于你所有的视图
我从来没有想过这会很容易,我正在做一个项目来处理这种validation。
下面的答案对于那些想要改变validation信息的人来说是很有帮助的。
以下方法使用“占位符名称”来代替“此字段”。
你可以很容易地修改东西
// Jquery Validation $('.js-validation').each(function(){ //Validation Error Messages var validationObjectArray = []; var validationMessages = {}; $(this).find('input,select').each(function(){ // add more type hear var singleElementMessages = {}; var fieldName = $(this).attr('name'); if(!fieldName){ //field Name is not defined continue ; return true; } // If attr data-error-field-name is given give it a priority , and then to placeholder and lastly a simple text var fieldPlaceholderName = $(this).data('error-field-name') || $(this).attr('placeholder') || "This Field"; if( $( this ).prop( 'required' )){ singleElementMessages['required'] = $(this).data('error-required-message') || $(this).data('error-message') || fieldPlaceholderName + " is required"; } if( $( this ).attr( 'type' ) == 'email' ){ singleElementMessages['email'] = $(this).data('error-email-message') || $(this).data('error-message') || "Enter valid email in "+fieldPlaceholderName; } validationMessages[fieldName] = singleElementMessages; }); $(this).validate({ errorClass : "error-message", errorElement : "div", messages : validationMessages }); });
要删除所有使用的默认错误消息
$.validator.messages.required = "";
而不是这些自定义错误消息,我们可以指定文本字段的types。
例如:将字段types设置为type ='email'
那么插件将识别该字段并正确validation。