Есть ли простой способ изменить значения ошибок по умолчанию в плагин проверки jQuery?
Я просто хочу переписать сообщения об ошибках, чтобы быть более личными для моего приложения - у меня много полей, поэтому я не хочу устанавливать сообщение отдельно для поля x... Я знаю, что могу это сделать
Добавьте этот код в отдельный файл / script включенный после плагин проверки для переопределения сообщений, отредактируйте по желанию:)
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 (http://jquery.bassistance.de/validate/demo/milk/), вы можете легко указать свои собственные сообщения
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")
}
}
}
Полный API для проверки (...): http://jqueryvalidation.org/validate
Это сработало для меня:
$.validator.messages.required = 'required';
$.validator.messages.maxlength = "Please enter no more than {0} characters.";
Это сработало для меня:
// 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.",
}
}
})
$().fileupload
также есть опции messages
.
Поскольку мы уже используем JQuery, мы можем позволить разработчикам страниц добавлять пользовательские сообщения в разметку, а не код:
<input ... data-msg-required="my message" ...
Или более общее решение, использующее один короткий атрибут data-msg для всех полей:
<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')
}
// ...
});
Другим возможным решением является цикл над полями, добавление одного и того же сообщения об ошибке в каждое поле.
$('.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(...),
...
});
@Josh: вы можете расширить свое решение с помощью переведенного сообщения из своего ресурсного пакета
<script type="text/javascript">
$.validator.messages.number = '@Html.Raw(@Resources.General.ErrorMessageNotANumber)';
</script>
Если вы поместите эту часть кода в свой _Layout.cshtml(MVC), он будет доступен для всех ваших просмотров
В новейшей версии есть несколько полезных материалов, которые вы можете сделать.
Если это простое поле ввода, вы можете добавить атрибут data-validation-error-msg
следующим образом:
data-validation-error-msg="Invalid Regex"
Если вам нужно что-то немного тяжелее, вы можете полностью настроить вещи, используя переменную со всеми значениями, которые передаются в функцию проверки. Ссылка на эту ссылку для получения более подробной информации - https://github.com/victorjonsson/jQuery-Form-Validator#fully-customizable
Я никогда не думал, что это будет так просто, я работал над проектом, чтобы справиться с такой проверкой.
Нижеприведенный ответ будет очень полезен тем, кто хочет изменить сообщение проверки без особых усилий.
В приведенных ниже подходах вместо "Это поле" используется "Имя заполнитель".
Вы можете легко изменить вещи
// 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 = "";
вместо этих настраиваемых сообщений об ошибках мы можем указать тип текстового поля.
Ex: задать тип поля для типа = 'email'
тогда плагин будет идентифицировать поле и правильно проверить.
.js
, любым методом, который вы хотите запустить после плагина для установки сообщений.