Parsley.js - отображение ошибок в определенном элементе
Используя Parsley.js, можно указать элемент, который должен содержать сообщения об ошибках? Я пробовал:
$('#myForm').parsley({
errors: {
container: {
$('#errorMessages')
}
}
});
Но сообщения об ошибках все еще размещаются сразу после ввода формы.
Ответы
Ответ 1
Я добавил еще один атрибут data, data-parsley-errors-container = "# element", который может позволить вам непосредственно в dom указать, где должны отображаться сообщения об ошибках.
Дополнительная информация здесь: http://parsleyjs.org/doc/index.html#ui-for-field
Лучшие
Ответ 2
Я вернул true из функции, снабженной клавишей контейнер.
Мой HTML-элемент
<input type="text" class="input-small" errorSpan="yyy" id="ddd" name="ddd" value="" data-required="true">
<span id="yyy"></span>
Javascript
$('#abc').parsley({
errors: {
classHandler: function ( elem ) {}
, container: function ( elem, template, isRadioOrCheckbox ) {
//here i have span msg. id to be displayed as custom attribute in input element
$('#' + $(elem).attr('errorSpan')).html(template);
return true;//returning back boolean makes it work
}
, errorsWrapper: '<ul></ul>'
, errorElem: '<li></li>'
}
});
Он также работает, если я вернусь
return $('#' + $(elem).attr('errorSpan')).html(template);
Надеюсь, это поможет...
Ответ 3
Для этого вам нужно использовать функцию обратного вызова
Вот простой пример для прикрепления сообщений об ошибках к родительскому элементу элемента.
$('#myForm').parsley({
errors: {
container: function ( elem ) {
return $( elem ).parent();
}
}
});
EDIT: работая над 1.1.10-dev, я изменил способ определения контейнера ошибок, как указано выше. Осторожно, это BC Break;
Ответ 4
@guillaumepotier Я попробовал свой код на jquerymobile, и я не показываю никаких сообщений об ошибках на экране. Я хочу добавить сообщение об ошибке в класс "help-inline"
index.html
<script src="js/vendor/parsley.message.th.js"></script>
<script src="js/vendor/parsley.extend.min.js"></script>
<script src="js/vendor/parsley.min.js"></script>
...
<div class="control-group">
<label class="control-label" for="A0_C1">From<i class="required-icon"></i></label>
<div class="controls">
<input type="text" id="A0_C1" name="A0_C1" value="" required="required" />
<span class="help-inline"></span>
</div>
</div>
parsley.message.th.js
window.ParsleyConfig = $.extend( true, {}, window.ParsleyConfig, {
errors: {
container: function ( elem ) {
return $(elem).parent().find(".help-inline");
}
}
});
UPDATE - Рабочее решение v1.1.9-dev
return $(elem).closest('.controls').find('.help-inline').append(template);
Ответ 5
Просто определите функцию классаHandler перед импортом библиотеки Parsley,, в моем случае, я использую bootstrap, и это применит ошибку и допустимые классы в родительском div (у него есть класс form-group).
<script>
window.ParsleyConfig = {
classHandler: function ( parsleyField) {
// specify where parsley error-success classes will be set
return parsleyField.$element.parent();
// Change this to change the element to apply too
},
};
</script>
Теперь просто добавьте проверку данных в parsley в свой тег формы:
<form method="post" id="form1" data-parsley-validate>
При использовании бутстрапа вам нужно также указать ошибку начальной загрузки и допустимые классы
<form method="post" id="form1" data-parsley-error-class="has-error" data-parsley-success-class="has-success" data-parsley-validate>
Чтобы получить класс "has-error", установленный в родительском div, недействительный/состояние ошибки (то же самое для действительного тоже):
<div class="form-group has-error">
<label>Name</label>
<input class="form-control" type="text" id="name" name="name" required="" data-parsley-trigger="keyup" data-parsley-minlength="5">
<p class="help-block">Example help text here.</p>
</div>
Это глобальное решение для всех полей.
Ответ 6
data-parsley-errors-container="#your-div-id"
работал у меня
<div class="form-group">
<label for="middle-name" class="control-label col-md-3 col-sm-3 col-xs-12">Start Time</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<div class=" datetimepicker3 input-append timepick">
<input class="form-control" data-format="hh:mm" placeholder="HH:MM" type="text" name="startTime" data-parsley-errors-container="#startTimeErrorContainer" required="required" id="startTime" />
<span class="add-on"><i class="fa fa-clock-o icon-time"></i></span>
</div>
<div id="startTimeErrorContainer"></div>
</div>