在不同步骤上带有两个术语复选框的多步表单无法使用 jQuery 验证插件正确验证?

问题描述 投票:0回答:0

有两个复选框的表格,用于就不同步骤(第一个和最后一个)达成一致。第一个工作完全正常,但是最后一步工作不正常。

这里是html代码

<form method="post" id="prizeRegistration" action="submit_book.php" enctype="multipart/form-data">
                <fieldset id="step1" class="publisher">
                    <div class="stepSec01">
                        <div class="row">
                            <div class="col-md-4">
                                <div class="form-group">
                                    <label for="email">Are you a Publisher?<span class="strik">*</span></label>
                                    <div class="check">
                                        <ul class="radioCls">
                                            <li>
                                                <input type="radio" id="Yes" checked="" name="publisher" value="yes">
                                                <label for="Yes"> <span></span>Yes</label>
                                            </li>
                                            <li>
                                                <input type="radio" id="No" name="publisher" value="no">
                                                <label for="No"> <span></span>No</label>
                                            </li>
                                        </ul>
                                        <div class="error" id="error_publisher"></div>
                                    </div>
                                </div>
                            </div>
                            ....
                            ....
                            ....
                            <div class="col-md-12">
                                <div class="form-group">
                                    <div class="checkbox">
                                        <p>By checking the box below, you hereby declare that all information submitted by you holds true.<span class="strik adStrik">*</span></p>
                                        <input type="checkbox" id="agreement" name="agreement" value="agree" />
                                        <label for="agreement"> <span></span>I agree</label>
                                    </div>
                                    <div class="error" id="error_agreement"></div>
                                </div>
                                <div class="form-group">
                                    <a href="javascript:void(0)" id="stepone" class="btn next">Next</a>
                                </div>
                            </div>
                        </div>
                    </div>
                </fieldset>
                <fieldset id="step2" class="book" style="display:none;">
                   ...
                </fieldset>
                <fieldset id="step3" class="author" style="display:none;">
                   ....
                </fieldset>
                <fieldset id="step4" class="editor" style="display:none;">
                    .....
                </fieldset>
                <fieldset id="step5" class="declaration" style="display:none;">
                    <div class="stepSec05">
                        <div class="row">
                            <div class="col-md-12">
                                <div class="form-group">
                                    <div class="checkbox">
                                        <p>I hereby declare that all information submitted as part of the form is true to my knowledge. Any information shared with me (as a representative of my Publishing House)
                                            will be kept confidential. A breach in the same will lead to the disqualification of the entries made by the Publishing House, for the foreseeable future.<span class="strik">*</span>
                                        </p>
                                        <input type="checkbox" id="declaration" name="declaration" value="agree" />
                                        <label for="declaration"><span></span>I Agree</label>
                                        <div class="error" id="error_declaration"></div>
                                    </div>
                                </div>
                                <div class="form-group"> <button type="submit" id="stepfive" class="btn">Submit</button> </div>
                            </div>
                        </div>
                    </div>
                </fieldset>
            </form>

这里是 jQuery 验证码

<script>
    $(document).ready(function() {
        $(".error").removeClass("error");
        $(".next").click(function() {
            var form = $("#prizeRegistration");
            jQuery.validator.addMethod("agreement", function(value, element) {

                if ($("#agreement").is(":checked")) {
                    return true;
                } else {
                    return false;
                }
            }, "Please check the box.");
            jQuery.validator.addMethod("declaration", function(value, element) {
                //var ckb_status = $("#declaration_agreement").prop('checked');
                if ($("#declaration").is(":checked")) {
                    return true;
                } else {
                    return false;
                }
            }, "Please check the box.");
            jQuery.validator.addMethod("lettersonly", function(value, element) {
                return this.optional(element) || /^[a-zA-Z ]*$/.test(value);
            }, "Letters only please");

            $.validator.addMethod('filesize', function(value, element, param) {
                return this.optional(element) || (element.files[0].size <= param * 1000000)
            }, 'File size must be less than {0} MB');

            form.validate({
                // ignore: [':not(checkbox:hidden)'],
                submitHandler: function() {
                    $('.loaderhome').show();
                    form.submit();
                },
                focusCleanup: true,
                errorPlacement: function(error, element) {
                    var name = $(element).attr("name");
                    error.insertAfter($("#error_" + name));
                },
                rules: {
                    email: {
                        required: true,
                        email: true,
                    },
                    publisher: {
                        required: true,

                    },
                    pbh_name: {
                        required: true,
                        lettersonly: true
                    },
                    imprint_name: {
                        required: true,
                        lettersonly: true
                    },
                    reg_address: {
                        required: true,
                    },
                    reg_phone: {
                        required: true,
                        number: true,
                        maxlength: 10,
                        minlength: 10
                    },
                    contact_person: {
                        required: true,
                        lettersonly: true
                    },
                    cp_email: {
                        required: true,
                        email: true,
                    },
                    cp_phone: {
                        required: true,
                        number: true,
                        maxlength: 10,
                        minlength: 10
                    },
                    proof: {
                        required: true,
                        filesize: 2
                    },
                    agreement: {
                        required: true,
                    },
                    published: {
                        required: true,
                    },
                    english: {
                        required: true,
                    },
                    book_title: {
                        required: true
                    },
                    published_date: {
                        required: true,

                    },
                    publishing_date: {
                        // required: true

                    },
                    isbn_code: {
                        required: true,
                        number: true,
                        maxlength: 13,
                        minlength: 10
                    },
                    orignal_title: {
                        lettersonly: true
                    },
                    original_lang: {
                        lettersonly: true
                    },
                    original_publisher: {
                        lettersonly: true
                    },
                    original_pub_date: {

                    },
                    original_isbn_code: {
                        number: true,
                        maxlength: 13,
                        minlength: 10
                    },
                    other_territory_pub: {
                        required: true,
                    },
                    territory_of_pub: {
                        lettersonly: true
                    },
                    other_territory_date_of_pub: {

                    },
                    book_cover: {
                        required: true,
                        filesize: 2
                    },
                    ebook: {
                        required: true,
                        filesize: 2
                    },
                    author_name: {
                        required: true,
                        lettersonly: true
                    },
                    author_date_of_birth: {
                        required: true,
                    },
                    author_email: {
                        required: true,
                    },
                    author_address: {
                        required: true,
                    },
                    author_proof_of_citizen: {
                        required: true,
                        filesize: 2
                    },

                    editor_name: {
                        required: true,
                        lettersonly: true
                    },
                    editor_email: {
                        required: true,
                        email: true,
                    },
                    editor_contact_number: {
                        required: true,
                        number: true,
                        maxlength: 10,
                        minlength: 10
                    },
                    declaration: {
                        required: true,
                    }

                },


            });
            console.log(form);
            if (form.valid() === true) {

                if ($('#step1').is(":visible")) {
                    current_fs = $('#step1');
                    next_fs = $('#step2');
                    $('#publisher').removeClass('active');
                    $('#publisher').addClass('grnactive');
                    $('#book').addClass('active');
                } else if ($('#step2').is(":visible")) {
                    current_fs = $('#step2');
                    next_fs = $('#step3');
                    $('#book').removeClass('active');
                    $('#book').addClass('grnactive');
                    $('#author').addClass('active');
                } else if ($('#step3').is(":visible")) {
                    current_fs = $('#step3');
                    next_fs = $('#step4');
                    $('#author').removeClass('active');
                    $('#author').addClass('grnactive');
                    $('#editor').addClass('active');
                } else if ($('#step4').is(":visible")) {
                    current_fs = $('#step4');
                    next_fs = $('#step5');
                    $('#editor').removeClass('active');
                    $('#editor').addClass('grnactive');
                    $('#declaration').addClass('active');
                } else if ($('#step5').is(":visible")) {
                    current_fs = $('#step5');
                    next_fs = $('#step1');
                    $('#declaration').addClass('active');
                    $('#declaration').addClass('grnactive');
                }


                next_fs.show();
                current_fs.hide();
            }
        });

        $('.backBtn').click(function() {
            if ($('#step5').is(":visible")) {
                current_fs = $('#step5');
                next_fs = $('#step4');
            } else if ($('#step4').is(":visible")) {
                current_fs = $('#step4');
                next_fs = $('#step3');
            } else if ($('#step3').is(":visible")) {
                current_fs = $('#step3');
                next_fs = $('#step2');
            } else if ($('#step2').is(":visible")) {
                current_fs = $('#step2');
                next_fs = $('#step1');
            }
            next_fs.show();
            current_fs.hide();
        });
    });
</script>

我试图更改名称,因为,id。当我们到达最后一步声明块时,它会自动添加有效类。我希望它在提交时显示错误而不检查它。但是,它仅在您单击或切换复选框时起作用。

javascript jquery validation jquery-plugins jquery-validate
© www.soinside.com 2019 - 2024. All rights reserved.