JQuery Validation plugin errorPlacement для флажка
Я использую плагин jQuery Validation для проверки моей формы. Моя проблема - это место сообщения об ошибке для флажка. см. это изображение:
![enter image description here]()
Это часть html, связанная с флажками + Проверка JQuery:
<fieldset id = "q8"> <legend class="Q8"></legend>
<label> What are your favourite genres of movies?<span>*</span></label>
<div class="fieldset content">
<style type="text/css">
.checkbox-grid li {
display: block;
float: left;
width: 25%;
}
</style>
<ul class="checkbox-grid">
<li><input type="checkbox" name="q8[]" value="Action"><label for="checkgenre[]">Action</label></li>
<li><input type="checkbox" name="q8[]" value="Adventure"><label for="checkgenre[]">Adventure</label></li>
<li><input type="checkbox" name="q8[]" value="Comedy"><label for="checkgenre[]">Comedy</label></li>
<li><input type="checkbox" name="q8[]" value="Animation"><label for="checkgenre[]">Animation</label></li>
<li><input type="checkbox" name="q8[]" value="Drama"><label for="checkgenre[]">Drama</label></li>
<li><input type="checkbox" name="q8[]" value="Romance"><label for="checkgenre[]">Romance</label></li>
//Continued the same for OTHER CHECKBOXES
</div>
</fieldset>
//html for other questions...
<input class="mainForm" type="submit" name="continue" value="Save and Continue" />
</form>
<script src="http://jqueryvalidation.org/files/dist/jquery.validate.min.js"></script>
<script src="http://jqueryvalidation.org/files/dist/additional-methods.min.js"></script>
<script>
$(document).ready(function() {
$('#form2').validate({ // initialize the plugin
errorLabelContainer: "#messageBox",
wrapper: "li",
rules: {
"q8[]": {
required: true,
},
"q9[]": {
required: true,
},
q10: {
required: true,
},
q11: {
required: true,
},
q12: {
required: true,
}
},
errorPlacement: function(error, element) {
if (element.attr("type") == "radio") {
error.insertBefore(element);
} else {
error.insertBefore(element);
}
}
});
});
</script>
Может кто-то любезно мне помочь, если можно исправить эту проблему или показать ошибку
сообщение (для всех типов ввода) прямо рядом с вопросом? (Я имею в виду точно такую же строку, что и вопрос, после *)??
Спасибо
Ответы
Ответ 1
Я добавил class
в label
для вашего вопроса, чтобы найти это проще...
<label class="question">What are your favourite genres of movies?<span>*</span></label>
Затем вам просто нужно практиковать методы "обхода DOM". Изучите методы здесь.
-
$(element).parents('div')
находит контейнер div
вашего element
.
-
Затем .prev($('.question'))
приведет вас к .question
, который является первым предыдущим родным братом этого div
.
Поместите все это вместе и вставьте сообщение об ошибке сразу после вопроса.
error.insertAfter($(element).parents('div').prev($('.question')))
Внутри errorPlacement
:
errorPlacement: function (error, element) {
if (element.attr("type") == "checkbox") {
error.insertAfter($(element).parents('div').prev($('.question')));
} else {
// something else if it not a checkbox
}
}
DEMO: http://jsfiddle.net/sgsvtd6y/
Возможно, вам не нужен условный, поскольку этот метод должен работать на всех ваших типах input
.
errorPlacement: function (error, element) {
error.insertAfter($(element).parents('div').prev($('.question')));
}
В противном случае, если ваш HTML-код отличается, вы можете использовать условный код со слегка измененным обходом DOM.