当from有效时,不会调用后期成功函数

时间:2017-12-22 10:49:23

标签: jquery validation

我有一个向Node Js发出请求的表单,在提交时 - 数据保存在MongoDB中。 我正在尝试使用Jquery Validate.js验证表单,当输入错误的值时出现 - 出现错误消息 - 但是当表单有效时 - 它会保持重定向到操作URL ...并且通过这样做 - 不显示发布成功消息。

这是我的js文件:

      $(document).ready(function () {

            toastr.options = {
                "debug": false,
                "positionClass": "toast-top-full-width",
                "onclick": null,
                "fadeIn": 300,
                "fadeOut": 100,
                "timeOut": 5000,
                "extendedTimeOut": 1000
            };

            jQuery.validator.addMethod("intlTelNumber", function (value, element) {
                return this.optional(element) || $(element).intlTelInput("isValidNumber");
            }, function () {
                if (toastr.warning("Warning")) {

                    toastr.clear(getLastToast());
                }
            });

            jQuery.validator.addMethod("isInt", function (value, element) {
                console.log(this.optional(element));
                console.log(value);
                console.log(element);
                return this.optional(element) || !isNaN$(element);

            });

            var options = {
                autoPlaceholder: true,
                preferredCountries: ['al']
            };

            $("#phone").intlTelInput(options);

            $('#submit').click(function () {
                $("#form").validate({
                    rules: {

                        "email": {
                            required: true,

                        }, "phone": {
                            required: true,
                            isInt: true
                        }, "textarea": {

                        }, "country": {

                        }

                    },
                    messages: {

                        "email": {
                            required: function () {
                                toastr.warning("Email is invalid")
                            }

                        },
                        "phone": {
                            required: function () {
                                toastr.warning("phone is invalid")
                            }

                        }
                    }

                });
                if ($('#form').valid()) {


                    var data = {
                        email: $('input[name="email"]').val(),
                        select: $('#exampleFormControlSelect1').val(),
                        phone: $('input[name="phone"]').val(),
                        country: $("#phone").intlTelInput("getSelectedCountryData").iso2,
                        textarea: $('textarea').val()


                    }

                    $.post({

                        data: data,

                        url: 'http://localhost:3000/endpoint',
                        success: function (data) {

                            toastr.success("Data Saved");

                        }
                    });
                }

                return false;
            });

        });

这是Html

       <form id="form" method="post" action="/endpoint">
            <div class="form-group">
                <label for="exampleFormControlInput1">Email address</label>
                <input type="email" class="form-control" name="email" 
                placeholder="name@example.com">
            </div>
            <div class="form-group">
                <label for="exampleFormControlSelect1">Example 
                 select</label>
                <select class="form-control" id="exampleFormControlSelect1" 
                   name="select">
                    <option>1</option>
                    <option>2</option>
                    <option>3</option>
                    <option>4</option>
                    <option>5</option>
                </select>
            </div>
            <div class="form-group">
                <label for="phone"> multiple select</label>
                <input id="phone" class="form-control" type="tel" 
              name="phone">
            </div>
            <div class="form-group">
                <label for="exampleFormControlTextarea1">Example 
                textarea</label>
                <textarea class="form-control" name="textarea" rows="3">
         </textarea>
            </div>
            <input type="submit" class="btn btn-primary" id="submit">

        </form>

这是我第一次尝试使用submitHandler

          $("#form").validate({
                rules: {

                    "email": {
                        required: true,

                    }, "phone": {
                        required: true,
                        isInt: true
                    }, "textarea": {

                    }, "country": {

                    }

                },
                messages: {

                    "email": {
                        required: function () {
                            toastr.warning("Email is invalid")
                        }

                    },
                    "phone": {
                        required: function () {
                            toastr.warning("phone is invalid")
                        }

                    }
                },
                submitHandler: function (form) { // for demo

                    var data = {
                        email: $('input[name="email"]').val(),
                        select: $('#exampleFormControlSelect1').val(),
                        phone: $('input[name="phone"]').val(),
                        country: $("#phone").intlTelInput("getSelectedCountryData").iso2,
                        textarea: $('textarea').val()


                    };

                    $.post({

                        data: data,

                        url: 'http://localhost:3000/endpoint',
                        success: function (data) {

                            toastr.success("Data Saved");

                        }
                    });
                    return false; // for demo
                }
            });

0 个答案:

没有答案