#jquery #validation #errorplacement
#jquery #проверка #ошибка размещения
Вопрос:
Я хотел бы добавить название ошибок в свою функцию, чтобы пользователи знали, какие поля они должны проверять.
Это моя текущая функция:
showErrors: function(errorMap, errorList) {
var summary = "Please check following errors:";
$.each(errorList, function() {
summary = " * " this.message "<br>" ;
});
$('.errorbox').html(summary);
this.defaultShowErrors();
},
submitHandler: function() {
alert("submitted!");
}
});
Как я могу это сделать?
Комментарии:
1. Я понятия не имел, что я должен был пометить как решаемый. Спасибо, что дали мне знать! Скрипка, которую мансуУК сделал в предыдущем вопросе, показывает, как она реализована сейчас. jsfiddle.net/manseuk/xTdYr/2
Ответ №1:
Поскольку вы используете сопротивление низких частот.без плагина проверки, самый простой вариант для вас — добавить дружественное сообщение об указании к title
параметру для каждого элемента управления вводом. Затем это сообщение будет использовано в качестве текста инструкции в появившемся сообщении об ошибке. Вот обновленная скрипка, показывающая, как это работает:http://jsfiddle.net/xTdYr/3 /
Кроме того, вы можете вручную добавить правила при вызове экземпляра .validate()
метода с помощью messages
параметра, подробности здесь:http://docs.jquery.com/Plugins/Validation/rules
Комментарии:
1. Рекомендуемые. Если это невозможно, вы могли бы использовать атрибут name, например
summary = " * " this.element.name ": " this.message "n";
2. Форма обрабатывается на разных языках, поэтому использование сообщений — не лучший вариант, поскольку я загружаю стандартные сообщения из разных языковых файлов. Таким образом, обратная связь об ошибке выглядит точно так же. Действительно ли нет возможности добавить значение имени в сообщение обратной связи?
3. Ответ Марко сработал для меня. Спасибо за другие предложения, люди.
Ответ №2:
Расширьте параметры с messages: {name:"name error"}
Живая демонстрация:http://jsfiddle.net/gsBTC /
$('#newform').validate({
errorPlacement: function(error, element) {
if (element.is(":radio")) {
error.prependTo(element.parent());
}
else { // This is the default behavior of the script
error.insertAfter(element);
console.log('here');
}
},
showErrors: function(errorMap, errorList) {
var summary = "You have the following errors: n";
$.each(errorList, function() {
summary = " * " this.message "n";
});
$('#errordiv').html(summary);
this.defaultShowErrors();
},
submitHandler: function() {
alert("submitted!");
},
messages: {
name : "name error",
subject: "subject error",
message: "message error"
}
});
Комментарии:
1. Проблема в том, что форма многоязычная. Итак, я использую языковые файлы для разных языков. Я мог бы добавить определенное сообщение для каждого элемента, но у меня есть 70 элементов на 3 разных языках. Это много сообщений. Поэтому я предпочитаю использовать общие сообщения на каждом языке и добавлять «имя», чтобы пользователь знал, какое поле не в порядке.