【问题标题】:MVC4 How to ignore validation when form submitMVC4表单提交时如何忽略验证
【发布时间】:2014-06-16 06:39:19
【问题描述】:

我是 MVC 验证的新手。当我使用提交表单更改下拉列表中的索引时,我试图忽略验证。但是,如果我在 from 中有另一个提交按钮触发了验证,则下面的方法将不起作用。

下拉列表:

    $("#dropdown").change(function () {

        $('#MyForm').validate().cancelSubmit = true;
        $('#MyForm').submit();
    });

另一个按钮:

    $("#Button").click(function () {
      $('#MyForm').removeData('validator');
      $('#MyForm').removeData('unobtrusiveValidation');
      $.validator.unobtrusive.parse($('#MyForm'));
      $('#MyForm').submit();
    });

因为我有一些 html 元素是由 ajax 调用动态生成的,我也想在点击提交时验证这些动态元素。这就是我这样做的原因:

      $('#MyForm').removeData('validator');
      $('#MyForm').removeData('unobtrusiveValidation');
      $.validator.unobtrusive.parse($('#MyForm'));

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    最后,我在下面做了一些事情,我解决了这个问题。

    $("#dropdown").change(function () {
        $('#MyForm').removeData('validator');
        $('#MyForm').removeData('unobtrusiveValidation');
        $('#MyForm').validate().cancelSubmit = true;
        $('#MyForm').submit();
    });
    

    【讨论】:

      【解决方案2】:
      @using (Html.BeginForm())
      {
          { HtmlHelper.ClientValidationEnabled = false;}
      }
      

      $('input, textarea, select', 'form').each(function () {
          $(this).attr('data-val', 'false');
      });
      

      【讨论】:

      • 如果我这样做了,表单中的所有验证都将被禁用。目前,我只想在更改此特殊下拉列表的索引时禁用验证。其他按钮或下拉列表或链接仍然可以触发验证。
      • $('input, textarea, select', 'form').each... 将其放入函数中,而您的特殊下拉列表的索引更改了调用方法并禁用验证,并且当索引再次更改时,通过调用另一个函数重新启用验证。函数内部将 data-val 值更改为 true ($(this).attr('data-val', 'true'));
      【解决方案3】:

      您还可以为表单提交按钮添加特殊属性:

      <button type="submit" formnovalidate>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多