Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止Jqueryvalidation在模块打开时验证远程_Php_Jquery_Jquery Validate - Fatal编程技术网

Php 防止Jqueryvalidation在模块打开时验证远程

Php 防止Jqueryvalidation在模块打开时验证远程,php,jquery,jquery-validate,Php,Jquery,Jquery Validate,我有这样的脚本: const add_modal = $('#add_modal'); const add_form = $('#add_form'); const add_button = $('#add_button'); const save_button = $('#save_button'); let add_validator = add_form.validate({ ignore: 'input[type=hidden], .select2-sear

我有这样的脚本:

const add_modal =  $('#add_modal');
const add_form = $('#add_form');
const add_button = $('#add_button');
const save_button = $('#save_button');

let add_validator = add_form.validate({

            ignore: 'input[type=hidden], .select2-search__field', // ignore hidden fields
            errorClass: 'validation-invalid-label',

            highlight: function(element, errorClass) {
                $(element).removeClass(errorClass);
            },
            unhighlight: function(element, errorClass) {
                $(element).removeClass(errorClass);
            },

            // Different components require proper error label placement
            errorPlacement: function(error, element) {

                // Unstyled checkboxes, radios
                if (element.parents().hasClass('form-check')) {
                    error.appendTo( element.parents('.form-check').parent() );
                }

                // Input with icons and Select2
                else if (element.parents().hasClass('form-group-feedback') || element.hasClass('select2-hidden-accessible')) {
                    error.appendTo( element.parent() );
                }

                // Input group, styled file input
                else if (element.parent().is('.uniform-uploader, .uniform-select') || element.parents().hasClass('input-group')) {
                    error.appendTo( element.parent().parent() );
                }

                // Other elements
                else {
                    error.insertAfter(element);
                }
            },
            rules: {
                name: {
                    required: true,
                    minlength: 2,
                    maxlength: 20
                },
                email: {
                    required: true,
                    email: true,
                    remote: "/admin/users/check-email",
                },
                role: {
                    required: true,
                },
                password: {
                    required: true,
                    minlength: 12,
                },
                password_verification: {
                    required: true,
                    minlength: 12,
                    equalTo: '#password'
                },
            },
            messages:{
                email:{
                    remote: "Email is already taken."
                }
            }
        });

        add_button.click(function (e) {
            e.preventDefault();
            add_modal.modal("show");
            add_validator.resetForm();
            $(':input').val("");
            $("#csrf").val($csrf);
        });

        save_button.click(function (e) {
            e.preventDefault();
            let form = $(this).closest('form');
            let $action = form.attr('action');
            let $method = form.attr('method');
            let $data  = form.serialize();

            if (add_form.valid()) {
                $.ajax({
                    url: $action,
                    type: $method,
                    data:$data,
                    success: function (result) {
                        if (result.type === 'success') {
                            add_modal.modal("hide");
                            add_validator.resetForm();
                            swalInit({
                                title: 'Success!',
                                text: result.text,
                                type: 'success',
                                timer: 3000,
                            }).then((reload) => {
                                datatables.ajax.reload();
                            });
                        } else {
                            swalInit({
                                title: 'Oops...',
                                text: result.text,
                                type: 'error',
                                timer: 3000,
                            });
                        }
                    },
                })
            }
        });
似乎jqueryvalidation插件正在检查打开的modals上的邮件可用性。因为当我看到web inspector时,它会向/admin/users/check email发送一个post请求。如何防止这种行为,并使其仅在按下“保存”按钮时进行检查?“保存”按钮是模式中的一个按钮。

尝试以下操作:

let update_validator = update_form.validate({
            ignore: 'input[type=hidden], .select2-search__field', // ignore hidden fields
            errorClass: 'validation-invalid-label',

            highlight: function(element, errorClass) {
                $(element).removeClass(errorClass);
            },
            unhighlight: function(element, errorClass) {
                $(element).removeClass(errorClass);
            },

            // Different components require proper error label placement
            errorPlacement: function(error, element) {

                // Unstyled checkboxes, radios
                if (element.parents().hasClass('form-check')) {
                    error.appendTo( element.parents('.form-check').parent() );
                }

                // Input with icons and Select2
                else if (element.parents().hasClass('form-group-feedback') || element.hasClass('select2-hidden-accessible')) {
                    error.appendTo( element.parent() );
                }

                // Input group, styled file input
                else if (element.parent().is('.uniform-uploader, .uniform-select') || element.parents().hasClass('input-group')) {
                    error.appendTo( element.parent().parent() );
                }

                // Other elements
                else {
                    error.insertAfter(element);
                }
            },
            rules: {
                name: {
                    required: true,
                    minlength: 2,
                    maxlength: 20
                },
                email: {
                    required: true,
                    email: true,
                    remote: {
                        url: "/admin/users/email-available",
                        type: "post",
                        data: {
                            user_id: function () {
                                return $("#id").val();
                            }
                        }
                    }
                },
                role: {
                    required: true,
                },
                password: {
                    minlength: 12
                },
                password_verification: {
                    required: isPasswordPresent,
                    minlength: 12,
                    equalTo: "#update_password"
                },
            },
            messages:{
                email:{
                    remote: "Email is already taken."
                }
            },

            submitHandler: function(form, event) {
                event.preventDefault();
                let $action = $(form).attr('action');
                let $method = $(form).attr('method');
                let $data  = $(form).serialize();

                $.ajax({
                    url: $action,
                    type: $method,
                    data: $data,
                    success: function (result) {
                        if (result.type === 'success') {
                            update_modal.modal("hide");
                            update_validator.resetForm();
                            swalInit({
                                title: 'Success!',
                                text: result.text,
                                type: 'success',
                                timer: 3000,
                                showCloseButton: true
                            }).then((reload) => {
                                datatables.ajax.reload();
                            });
                        } else {
                            swalInit({
                                title: 'Oops...',
                                text: result.text,
                                type: 'error',
                                timer: 3000,
                            });
                        }
                    },
                })
            }
        });

您没有解释要做什么,也没有显示相关的呈现HTML。通过查看您的OP,我们无法分辨哪些按钮处于模式中,哪些不处于模式中。@Sparky下面是我使用的一些HTML和JS。我想当modals里面的按钮被点击时,它将被验证,而不是当modals打开时。我真的认为你应该去看看。请注意我的评论。。。接受的答案完全错误-不应使用
success
handler。对于提交表单时出现的任何Ajax,请使用
submitHandler
。@Sparky啊,很抱歉,请阅读您的评论。但你的意思是什么?我不明白。我想现在我知道怎么做了,就像你说的,我会尝试一下。假设我把我的ajax放在submitHandler中,我有必要检查表单是否正确,比如:if(add_form.valid()){}?或者它不再需要了?