即使在ajax调用之后的preventDefault()之后,表单也会被提交

时间:2018-06-12 13:14:28

标签: javascript jquery ajax asp.net-mvc

我有一个javascript方法来进行一些验证:

    function validar(event) {

            var arrIni = $("#initialDate").val().split("/");
            var arrFim = $("#endDate").val().split("/");
            var dateIni = new Date(arrIni[2], arrIni[1], arrIni[0]);
            var dataEnd = new Date(arrFim[2], arrFim[1], arrFim[0]);
            var check = true;
            if (dataEnd < dataIni) {
                event.preventDefault();
                toastr.error('End date must be higher than initial date!');
                check = false;
            } else {
                $.ajax({
                    url: '/Configurations/ValidateInsert/',
                    type: 'GET',
                    dataType: 'html',
                    data: { DataIni: $("#initialDate").val(), DataEnd: $("#endDate").val() },
                    cache: false,
                    success: function (response) {
                        if (response === 'false') {
                            event.preventDefault();
                            toastr.error('There is already a configuration with the given dates.');
                            check = false;
                        }else{
                           check = true;
}
                    },
                    failure: function (response) {
                        toastr.error('Error.');
                    },
                    error: function (response) {
                        toastr.error('Error.');
                    }
                });
            }
        }

第一次验证有效。当我尝试使用ajax调用验证时会发生此问题。即使出现错误,当我调用event.preventDefault时,表单仍会提交事件,并且不会显示带错误消息的toastr。我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

如果要应用Ajax验证,请将按钮类型从“提交”按钮更改为普通按钮和$(&#34; #Form Id&#34;)。如下面给出的jQuery的submit()在ajax成功函数中。

$(&#34; #Form Id&#34;)。submit();