javascript - 进行 ajax 调用时如何尊重客户端验证

标签 javascript jquery ajax asp.net-mvc asp.net-mvc-5

我想进行一个ajax调用,然后等待ajax调用的响应(在此之前停止表单提交),然后根据我得到的ajax响应发布表单。这个问题是基于Make ajax call and then submit form 。因此,在放置以下脚本后,一切正常,但我失去了客户端验证。我可以进行 ajax 调用并仍然遵守客户端验证吗?

@section scripts {
    <script>
        var canSubmit = false;
        $('form').submit(function (e) {
            if (!canSubmit) {
                e.preventDefault();
                var data = $('form').serialize();
                var url = $(this).data('url');
                $.ajax({
                    url: url,
                    type: 'POST',
                    data: data,
                    success: function (response) {
                        if (response.hasPreviousRequest) {
                            if (confirm("You've already applied for this job. Apply again?")) {
                                canSubmit = true;
                                $('form').submit();
                            }
                        }
                        else {
                            canSubmit = true;
                            $('form').submit();
                        }
                    },
                    error: function () {
                        alert("error");
                    }
                });
            }
        });
    </script>
}

P.S:请注意,一旦我删除ajax调用,客户端验证就会开始正常工作。有人可以向我解释一下这种行为吗?

最佳答案

您需要在表单元素上调用.valid()方法(如果没有,则取消ajax调用)

$('form').submit(function (e) {
    if (!$(this).valid()) {
        return // exit
    }
    if (!canSubmit) {
        ....

关于javascript - 进行 ajax 调用时如何尊重客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46030569/

相关文章:

javascript - Ajax在不同的tab点击动态调用不同的wordpress模板

javascript - 如何使一个div与一个div具有相同的高度

javascript - 单击 div 向右和向上切换箭头

javascript - jQuery 就绪函数值传递给 JavaScript 函数

php - AJAX/PHP/Apache 数据传输和文件权限问题

javascript - 尝试迭代并解析 xml 标签并分别显示段落中每个标签内的文本

javascript - 对象函数 (e,t){return new x.fn.init(e,t,r)} 没有方法 'plot'

javascript - 将字符串 '+' 转换为 + 运算符

jqueryUI 自动完成带有额外数据?

javascript - 卸载前更新 MySQL 字段