简体   繁体   English

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

[英]How to jquery validation under select2 field - I tried everything

I have a problem with select2 and Jquery and Checkboxes.我有 select2 和 Jquery 和复选框的问题。 I made a form with some different fields.我制作了一个包含一些不同领域的表格。 The validate warning is showed above Select field when I added the validate of checkboxes.当我添加复选框的验证时,验证警告显示在选择字段上方。 When I did not add this code:当我没有添加此代码时:

[checkboxes validate code][1] [复选框验证代码][1]

[![enter image description here][1]][1] [![在此处输入图像描述][1]][1]

the warning is shown under select2 field but the checkboxes warnings are showed wrong: [Wrong warning on checkoboxes][3] I do not why, can somebody look to the code and correct me?警告显示在 select2 字段下,但复选框警告显示错误:[复选框错误警告][3] 我不知道为什么,有人可以查看代码并纠正我吗?

[![enter image description here][2]][2] [![在此处输入图像描述][2]][2]

[form printscreen][2] [表单打印屏幕][2]

[![enter image description here][3]][3] [![在此处输入图像描述][3]][3]

You can try this:你可以试试这个:

<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>

Script:脚本:

       $("#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);
                }
            }
        });

Place the contains id="errorToShow" where you want to show error.将 contains id="errorToShow" 放在要显示错误的位置。 This works for me.这对我有用。 The error message will be shown in错误信息将显示在

<div id="errorToShow"></div>

Thank you for your answer.谢谢您的回答。 So I do it a little different.所以我做的有点不同。 The validation code is now:验证代码现在是:

                $("#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);
                        }
                    },



                });

and now the warning message is Under select2 so It is Ok.现在警告消息在 select2 下,所以没问题。

The code Of select2 is 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();
                }); 

the second my problem is has-error does not wotk in select2 field and doesnt highlight it on red.第二个我的问题是 has-error 在 select2 字段中没有 wotk 并且没有用红色突出显示它。

enter image description here在此处输入图片说明

the code in form is:表格中的代码是:

<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>                          

what do you think about it.你怎么看待这件事。 What can be wrong here?这里有什么问题?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM