如何在 select2 字段下进行 jquery 验证 - 我尝试了一切



我对select2和Jquery和Checkbox有问题。我制作了一个包含一些不同字段的表单。验证警告显示在我添加验证复选框时选择字段上方。 当我没有添加此代码时:

[复选框验证代码][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);
}
}
});

将包含 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>                          

对此,你怎么看。这里可能出了什么问题?

最新更新