Jquery验证单击提交按钮两次ASP.Net core MVC项目

标签 jquery asp.net-mvc forms visual-studio jquery-validate

我似乎找不到这个问题的解决方案。我进行了搜索,但人们采取的方法似乎都不适合我的情况。

$(document).on("submit", "#createDriverForm", function (e) {

    e.preventDefault();

    $("#createDriverForm").validate({
        ignore: null,
        rules: {
            driversLicenceCountryId: {
                requiredselect: 0
            },
            driversLicenceNumber: "required",
            firstName: "required",
            lastName: "required",
            genderId: {
                requiredselect: 0
            },
            dateOfBirth: "required",
            driversLicenceDateIssued: "required",
            driversLicenceExpiryDate: "required",
            driversLicenceTypeId: {
                requiredselect: 0
            },
            driversLicenceFirstIssued: "required"
        },
        //For custom messages
        messages: {
            driversLicenceCountryId: {
                requiredselect: "Please select your country of licence"
            },
            driversLicenceNumber: "Please enter driver's licence number",
            firstName: "Please enter your first name",
            lastName: "Please enter your last name",
            genderId: "Please select your gender",
            dateOfBirth: {
                requiredselect: "Please enter your date of birth"
            },
            driversLicenceDateIssued: "Please enter your driver's licence issue date",
            driversLicenceExpiryDate: "Please enter your driver's licence expiry date",
            driversLicenceTypeId: {
                requiredselect: "Please select licence type"
            },
            driversLicenceFirstIssued: "Please enter your driver's licence first issue date"
        },
        errorElement: "div",
        errorPlacement: function (error, element) {
            var placement = $(element).data('error');
            if (placement) {
                $(placement).append(error);
            } else {
                error.insertAfter(element);
            }
        },
        submitHandler: function () {

            var driverModal = $("[data-remodal-id=driver]").remodal();

            $.ajax({
                beforeSubmit: ProcessingModal("Saving driver details. Please hold...."),
                type: "POST",
                url: "/Quote/SaveDriverDetails",
                data: $("#createDriverForm", modal).serialize(),
                success: function (data) {
                    SuccessSwalWithCallback(data,
                        function () {
                            driverModal.close();
                            window.location.reload();
                        });
                },
                error: function (data) {
                    ErrorSwal(data.responseText);
                }
            });
        },
        invalidHandler: function (event, validator) {
            Notice(`Please ensure all required fields are entered. Number of invalid fields: ${validator.numberOfInvalids()}`);
        }
    });

});

我有一个通过服务器动态呈现的表单,然后显示在模式上。每当我单击表单上的“提交”类型的“保存”按钮时。我意识到在触发验证效果之前我必须再次单击。我需要帮助来找出要采取的方法。

注意。每当我拿出

$(document).on("submit", "#createDriverForm", function (e)

然后表单正常发布,页面重新加载并且不会触发验证。

<小时/>

编辑:更多地了解如何在 DOM 上填充表单。

<div id="driverModal" class="remodal b-top-red" data-remodal-id="driver" style="max-width: 80%" data-remodal-options="closeOnOutsideClick: false">
        <button data-remodal-action="close" class="remodal-close"></button>
        <div id="driverContent"></div>
    </div>

我有一个模式,每当用户单击页面上的“查看/编辑”时,服务器就会返回 <form id="createDriverForm">......</form>通过$("#driverContent").html(data) 。即数据是形式。当我说表单是动态呈现时,巩固了我的解释。

最佳答案

您不需要$(document).on("submit".....)。 如果“#createDriverForm”是一个元素,请将submitHandler()更改为以下内容。 https://jqueryvalidation.org/validate/

$("#createDriverForm").validate({

    submitHandler: function(form) {
       $(form).ajaxSubmit();    
});

关于Jquery验证单击提交按钮两次ASP.Net core MVC项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45425935/

相关文章:

javascript - 加载后确定元素是否具有带有 jQ​​uery 的 CSS 类

jquery - 如何在不知道用户查看的内容和他们想要查看的内容的情况下遍历 div

Web 应用程序 : centralization vs. 规范的 Javascript/jQuery 最佳实践

css - 如何将 HTML 表单数据输出为 PDF?

php - 如何使用php中的代码在数据库中插入动态表单字段的值

php - 让我的 JavaScript 文本编辑器提交

javascript - 根据屏幕宽度交换div位置

jquery - 启用对隐藏元素的验证

c# - 将一系列条目添加到数据库

asp.net-mvc - 如何从 URL 获取 View 中的当前路由 ID (ASP.NET MVC)