КонтекстBootstrap 3 состояния проверки с JQuery апробированы формы, которая использует плагин Избранный
- У меня есть форма, что я проверяющий с помощью JQuery Validate Plugin.
- Все элементы управления формой необходимы, за исключением текстового поля.
- Я использую состояния проверки Bootstrap 3 для проверки правильности проверки элементов формы.
- Для выбора управления, я использую
Проблема
У меня возникли проблемы, выяснить, как решить следующее:
1- Предотвратить текстовое поле управление от применения условия подтверждения успеха, поскольку этот контроль формы не проверяется, поскольку он является необязательным.
(Для того, чтобы воспроизвести проблему в поле ниже JSFiddle, нажмите кнопку Submit с пустой формой)
2- Применить состояние проверки ошибок на границе списка. Сейчас только метка получает состояние проверки ошибок.
3 - Удалите состояние проверки и сообщения об ошибке и примените класс успеха, когда пользователь выберет опцию из выпадающего списка. Сейчас сообщение об ошибке и класс ошибок остаются.
JSFiddle
Я создал JSFiddle для иллюстрации проблемы.
HTML-
<div class="container" role="main">
<!-- Contents of the popover associated with the task name text input -->
<div id="namePopoverContent" class="hide">
<ul>
<li><small>...</small></li>
<li><small>...</small></li>
</ul>
</div>
<form class="form-horizontal" method="post" action="" id="taskForm">
<div class="row">
<div class="col-md-9">
<div class="form-group">
<label for="taskName" class="control-label col-md-1">Name</label>
<div class="col-md-11">
<input type="text" class="form-control taskNameValidation" id="taskName" name="taskName" autofocus required data-toggle="popover">
</div>
</div>
</div>
<div class="col-md-3"></div>
</div>
<div class="row">
<div class="col-md-9">
<div class="form-group">
<label for="taskDataset" class="col-md-1 control-label">Dataset</label>
<div class="col-md-11">
<select class="form-control chosen-select taskDatasetValidation" data-placeholder="Choose a dataset" name="taskDataset" id="taskDataset" required>
<option value=""></option>
<option value="runnableDataset_Id1">Dataset 1</option>
<option value="runnableDataset_Id2">Dataset 2</option>
<option value="runnableDataset_Id3">Dataset 3</option>
<option value="runnableDataset_Id4">Dataset 4</option>
</select>
</div>
</div>
</div>
<div class="col-md-3"></div>
</div>
<div class="row">
<div class="col-md-9">
<div class="form-group">
<label for="taskDescription" class="col-md-1 control-label">Description</label>
<div class="col-md-11">
<textarea class="form-control" name="taskDescription" id="taskDescription" maxlength="1000" rows="4"></textarea>
</div>
</div>
</div>
<div class="col-md-3"></div>
</div>
<div class="row">
<div class="col-md-9">
<div class="pull-right top-margin">
<input type="submit" class="btn btn-primary btn-sm" value="Submit" name="taskSetUpSubmit">
</div>
</div>
<div class="col-md-3"></div>
</div>
</form>
JS
//Bootstrap popover
$('[data-toggle="popover"]').popover({
trigger: "hover focus",
container: "body",
placement: "bottom",
html: true,
title: "Name Tips",
content: function() { return $('#namePopoverContent').html();}
});
//Chosen select plugin
$(function() {
$('.chosen-select').chosen();
$('.chosen-select-deselect').chosen({ allow_single_deselect: true });
});
//JQuery validate plugin
$(function() {
$.validator.setDefaults({
errorClass: 'text-danger',
ignore: ':hidden:not(.chosen-select)',
errorPlacement: function (error, element) {
if (element.hasClass('chosen-select'))
error.insertAfter(element.siblings(".chosen-container"));
else {
error.insertAfter(element);
}
}
});
//rules and messages objects
$("#taskForm").validate({
highlight: function(element) {
$(element).closest('.form-group').removeClass('has-success').addClass('has-error');
},
unhighlight: function(element) {
$(element).closest('.form-group').removeClass('has-error').addClass('has-success');
}
});
$('.taskNameValidation').each(function() {
$(this).rules('add', {
required: true,
messages: {
required: "Provide a space-separated name"
}
});
});
$('.taskDatasetValidation').each(function() {
$(this).rules('add', {
required: true,
messages: {
required: "Choose a dataset"
}
});
});
});
Я боролся с этим без удачи. Любая помощь будет оценена.
Большое спасибо за вашу помощь. Я новичок во всех технологиях веб-разработки, поэтому я очень ценю ваше подробное объяснение. – dml
@ пользователь2669241, пожалуйста. Спасибо, что нашли время, чтобы правильно написать свой вопрос. – Sparky
Это, наверное, глупый вопрос, но я все равно спрошу. Вы сказали: «Вам нужно посмотреть визуализированную DOM и найти динамически созданный элемент Chosen», что имеет смысл, но как я могу это сделать? При отладке тогда я смотрел на источник страницы, но я мог видеть только то, что я мог видеть в своем коде: статически созданные элементы управления. Думаю, мой вопрос заключается в том, как отлаживать динамически созданные элементы. Благодаря! – dml