jQuery.validate()。form()仅在加载一次时始终为true

时间:2019-07-01 08:38:30

标签: javascript jquery asp.net jquery-validate unobtrusive-validation

我对客户端验证插件fpr jQuery有疑问。 我有以下情况:

该Web应用程序是ASP.NET MVC 5应用程序。 我使用AJAX通过将 #content 元素替换为另一页的内容(如果您在其中导航)来创建单页应用程序。

我还使用了_Layout.cshtml文件,该文件“包含”了一些脚本,例如 jQuery.validate * 文件(validate和validate.unobtrusive)。

当页面包含表单时,我添加了验证-文件通过

@ Scripts.Render(“〜/ bundles / jqueryval”)

在页面上(包含表单),然后手动处理提交按钮的click事件,如下所示:

    function InitializeForm($scope, jsonCallback) {
        //Setup Validation
        var $form = $('form', $scope);
        var $submitButton = $(':submit', $form);
        $submitButton.click(function (event) {
            let isValid = $form.validate().form();
            if (!isValid)
                event.stopImmediatePropagation();
            //...
        });

        //...
    }

但是我认为重新加载验证脚本文件以验证页面的所有形式是非常丑陋且不必要的。

我尝试了几种选择,以避免每次都加载文件。以下是我尝试进行的一些验证工作,而无需为每个视图加载文件:

  • 当文档准备好创建验证器时(我应该自己处理请求,对吧?),我尝试使用 $ form.validate()来代替单击事件处理程序。 / li>
  • 我尝试使用事件处理程序手动调用验证,但是即使我保留了现有的JS代码并只是删除了 @ Scripts.Render(“〜/ bundles / jqueryval”),“ isValid”始终为true。我检查了表单的所有元素(以及表单本身),它们都有所需的data-attribute。

  • 我还试图销毁/重置click事件处理程序中的验证器,但这也没有用。

我想念的东西不行吗?

0 个答案:

没有答案