【问题标题】:Manually bind JQuery validation after Ajax requestAjax 请求后手动绑定 JQuery 验证
【发布时间】:2011-06-07 17:35:04
【问题描述】:

我正在请求一个 ASP.net MVC 视图到一个 live box 中,并且该视图包含已标记有属性的表单字段,这些属性将由 JQuery 的不显眼的验证器插件使用。

客户端脚本无法正常工作,我的理论是,这是因为验证框架仅在页面加载时触发,而在 MVC 视图加载到实时框时早已过去。

因此,我如何让验证框架知道它有新的表单字段需要修复?

干杯,伊恩。

【问题讨论】:

    标签: asp.net-mvc-3 jquery-validate unobtrusive-validation


    【解决方案1】:
    var $form = $("form");
    
    $form.unbind();
    $form.data("validator", null);
    
    $.validator.unobtrusive.parse(document);
    // Re add validation with changes
    $form.validate($form.data("unobtrusiveValidation").options);
    

    【讨论】:

      【解决方案2】:

      您可以查看following blog post。这是another one

      【讨论】:

      • 谢谢达林。关于第一个链接,“getFunction”是什么/在哪里?我在验证文件或 jquery 源中找不到它。
      • 第二个链接让我开始工作。不幸的是,验证摘要没有出现在客户端上。另一个问题...
      【解决方案3】:

      另一种选择,相当诡计,对我有用。只需在 ajax 调用返回的部分视图的开头添加以下行

      this.ViewContext.FormContext = new FormContext(); 
      

      Reference

      【讨论】:

        【解决方案4】:

        出于某种原因,我不得不将 bjan 和 dfortun 的答案结合起来......

        所以我把这个放在我的观点中:

        @{
          this.ViewContext.FormContext = new FormContext();
        }
        

        在 ajax 调用完成后执行这个:

        var form = $("#EnrollmentForm");
        form.unbind();
        form.data("validator", null);
        $.validator.unobtrusive.parse(document);
        form.validate(form.data("unobtrusiveValidation").options);
        

        【讨论】:

          【解决方案5】:

          我遇到了类似的问题。我有一个表单,它使用 Ajax 请求重新显示具有不同表单字段的表单的一部分。我使用不显眼的验证,在客户端使用

          @Html.TextBoxFor
          

          用于我的文本框。由于某种原因,在尝试使用无效字段提交时验证有效(即,文本框以红色标出,并且相应的错误消息与我放入的内容一起显示

          data_val_required
          

          属性,例如。

          但是,当我单击一个发出 Ajax 请求以修改具有不同字段的表单然后再次提交的按钮后,仅显示无效字段上的红色轮廓,但不呈现错误消息。

          bjan 的技巧对我有用,但我仍然看不出是什么导致了问题。执行客户端验证所需的所有 HTML 都在那里我只是无法弄清楚为什么错误消息属性值不会显示。

          我能想到的只是 jQuery 验证代码在提交后不会再次尝试检查表单字段。

          【讨论】:

            猜你喜欢
            • 2016-01-16
            • 1970-01-01
            • 1970-01-01
            • 2019-03-13
            • 2023-04-02
            • 1970-01-01
            • 2020-08-20
            • 2021-08-14
            • 2010-10-10
            相关资源
            最近更新 更多