[英]How to jquery validation under select2 field - I tried everything
我有 select2 和 Jquery 和复选框的问题。 我制作了一个包含一些不同领域的表格。 当我添加复选框的验证时,验证警告显示在选择字段上方。 当我没有添加此代码时:
[复选框验证代码][1]
[![在此处输入图像描述][1]][1]
警告显示在 select2 字段下,但复选框警告显示错误:[复选框错误警告][3] 我不知道为什么,有人可以查看代码并纠正我吗?
[![在此处输入图像描述][2]][2]
[表单打印屏幕][2]
[![在此处输入图像描述][3]][3]
你可以试试这个:
<form id="myForm" method="post" name="myForm" action="">
<div class="checkbox-container">
<label for="terms">terms : </label>
<input type="checkbox" name="terms" id="terms">
<div id="errorToShow"></div>
</div>
<button type="submit">save</button>
</form>
脚本:
$("#myForm").validate({
rules: {
terms: "required"
},
messages: {
terms: "select the checkbox"
},
errorPlacement: function(error, element) {
if (element.attr("name") == "terms") {
error.appendTo("#errorToShow");
} else {
error.insertAfter(element);
}
}
});
将 contains id="errorToShow" 放在要显示错误的位置。 这对我有用。 错误信息将显示在
<div id="errorToShow"></div>
谢谢您的回答。 所以我做的有点不同。 验证代码现在是:
$("#signupForm").validate({
debug: false,
errorClass: "has-error",
errorElement: "span",
rules: {
miejscowosc: {
required: true,
lettersonly: true,
},
wojewodztwo: {
required: true,
},
errorContainer: $('#errorContainer'),
// enabling this will display error labels in the container error
// errorLabelContainer: $('#errorContainer ul'),
// wrapper: 'li',
highlight: function(element, errorClass, validClass) {
$(element).addClass(errorClass); //.removeClass(errorClass);
$(element).closest('.form-group').removeClass('has-success').addClass('has-error');
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass(errorClass); //.addClass(validClass);
$(element).closest('.form-group').removeClass('has-error').addClass('has-success');
},
errorPlacement: function(error, element) {
if (element.parent('.input-group').length) {
error.insertAfter(element.parent());
} else if (element.hasClass('select2')) {
error.insertAfter(element.next('span'));
}
else if (element.attr("name") == "zgoda") {
error.insertAfter("#checkboxError");
}
else if (element.attr("name") == "zgoda1") {
error.insertAfter("#checkboxError1");
}
else if (element.attr("name") == "zgoda2") {
error.insertAfter("#checkboxError2");
}
else {
error.insertAfter(element);
}
},
});
现在警告消息在 select2 下,所以没问题。
select2的代码是
var Formularz = function () {
return {
//main function to initiate the module
init: function () {
function format(state) {
if (!state.id) return state.text; // optgroup
return state.id.toLowerCase() + state.text;
}
$("#Select_Wojewodztwo").select2({
placeholder: "Wybierz Wojewodztwo",
allowClear: true,
formatResult: format,
width: '100%',
formatSelection: format,
escapeMarkup: function (m) {
return m;
}
});
}
};
}();
jQuery(document).ready(function() {
Formularz.init();
});
第二个我的问题是 has-error 在 select2 字段中没有 wotk 并且没有用红色突出显示它。
表格中的代码是:
<div class="col-sm-12 col-md-4 col-lg-4 form-group">
<div class="col-lg-12 form-label">
Województwo
</div>
<div class="col-lg-12 ">
<select name="wojewodztwo" id="Select_Wojewodztwo" class="select2 form-control selection">
<option value=""></option>
<option value="Dolnoslaskie">Dolnośląskie</option>
<option value="Kujawsko-pomorskie">Kujawsko-pomorskie</option>
<option value="Lubelskie">Lubelskie</option>
<option value="Lubuskie">Lubuskie</option>
<option value="Lodzkie">Łódzkie</option>
<option value="Malopolskie">Małopolskie</option>
<option value="Mazowieckie">Mazowieckie</option>
<option value="Opolskie">Opolskie</option>
<option value="Podkarpackie">Podkarpackie</option>
<option value="Podlaskie">Podlaskie</option>
<option value="Pomorskie">Pomorskie</option>
<option value="Slaskie">Śląskie</option>
<option value="Swietokrzyskie">Świętokrzyskie</option>
<option value="Warminsko-mazurskie">Warmińsko-mazurskie</option>
<option value="Wielkopolskie">Wielkopolskie</option>
<option value="Zachodniopomorskie">Zachodniopomorskie</option>
</select>
</div>
</div>
你怎么看待这件事。 这里有什么问题?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.