проверка jQuery: изменить сообщение об ошибке по умолчанию
есть ли простой способ изменить значения ошибок по умолчанию в проверка jQuery плагин?
Я просто хочу переписать сообщения об ошибках, чтобы быть более личным для моего приложения-у меня есть много полей, поэтому я не хочу устанавливать сообщение индивидуально для поля x...Я знаю, что могу это сделать!
12 ответов:
добавить этот код в отдельный файл/скрипт включен после плагин проверки для переопределения сообщений, редактировать по желанию :)
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}.") });
вы можете указать свои собственные сообщения в вызове проверки. Снятие и сокращение этого кода из формы запомнить регистрацию молока, используемой в документации плагина проверки (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
это сработало для меня:
// 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, мы можем позволить дизайнерам страниц добавлять пользовательские сообщения в разметку, а не код:
<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-файл в формате, подобном формату в папке локализации загрузок, и включить его после загрузки проверки.js
jQuery.extend(jQuery.validator.messages, { required: ..., maxlength: jQuery.validator.format(...), ... });
самая новая версия имеет некоторые славные встроенные вещи вы можете сделать.
Если это простое поле ввода, вы можете добавить атрибут
data-validation-error-msg
вот так...data-validation-error-msg="Invalid Regex"
Если вам нужно что-то немного тяжелее, вы можете полностью настроить вещи, используя переменную со всеми ценностями, которые передаются в функцию проверки. Ссылка на эту ссылку для получения полной информации -- https://github.com/victorjonsson/jQuery-Form-Validator#fully-customizable
@Josh: вы можете расширить свое решение с помощью переведенного сообщения из вашего пакета ресурсов
<script type="text/javascript"> $.validator.messages.number = '@Html.Raw(@Resources.General.ErrorMessageNotANumber)'; </script>
Если вы поместите этот код в ваш файл _Layout.cshtml (MVC) он доступен для всех ваших представлений
Я никогда не думал , что это будет так просто, я работал над проектом для обработки такой проверки.
приведенный ниже Ответ очень поможет тому, кто хочет изменить сообщение проверки без особых усилий.
ниже подходы использует " имя заполнителя "вместо"это поле".
вы можете легко изменить вещи
// 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 }); });
вместо этих пользовательских сообщений об ошибках мы можем указать тип текстового поля.
пример: Установите тип поля в тип = 'email'
затем плагин будет идентифицировать поле и проверить правильно.
Comments