【问题标题】:Disable Enable unobtrusive validation for specific submit button禁用为特定提交按钮启用不显眼的验证
【发布时间】:2011-11-21 11:56:06
【问题描述】:

我有两个提交按钮返回,继续。单击“返回”时,我应该怎么做才能禁用客户端验证。我试图将cancel class 添加到按钮属性,但它接缝没有帮助。

UPD。实际上这是有效的cancel class。但是如果你动态添加它(通过javascript),它接缝不起作用。

【问题讨论】:

    标签: asp.net-mvc button submit unobtrusive-validation


    【解决方案1】:

    我为某些按钮附加了一个事件处理程序,它改变了该特定表单上验证器对象的设置。

    $(".jsCancel").click(function (e) {
        $(e.currentTarget).closest("form").validate().settings.ignore = "*"
    });
    

    这在 MVC3 中对我来说就像一个魅力。

    我不知道这是否对您特别有帮助,但是由于我使用 ajax 表单,因此每次替换 ajax 表单的内容时,我都必须通过使用事件 ajax 成功将事件附加到这些按钮。重新解析表单并将事件附加到取消按钮的完整代码是:

    $(document).ajaxSuccess(function (event, xhr, settings) {
        var $jQval = $.validator, adapters, data_validation = "unobtrusiveValidation";
        $jQval.unobtrusive.parse(document);
        $(".jsCancel").click(function (e) {
            $(e.currentTarget).closest("form").validate().settings.ignore = "*"
        });
    });
    

    【讨论】:

    • 谢谢。我已经通过在生成内容时向我的按钮添加“取消”类来解决这个问题。我有问题要问你这个选择器是什么意思“.jsCancel”?你有没有尝试使用这个 $(".jsCancel").live("click", ... 而不是这个 $(".jsCancel").click(function (e)...
    • 添加取消类对我不起作用,因此我的解决方法。我们通常在 css 类前面加上 js,如果它们用于查找元素而不是样式。我将该类放在不应验证表单的提交按钮上。我想 live() 或 on() 也可以,我只是不习惯使用它。
    【解决方案2】:

    使用 JavaScript 劫持按钮单击以提交表单。

    这是 jQuery 的一个很好的例子:

    $("#MyButton").click(function(e) { 
    
        //submit your form manually here
        e.preventDefault();
    });
    

    【讨论】:

      【解决方案3】:

      这确实是对tugberk答案的评论,但是cmets并没有很好地显示代码示例。

      某些浏览器版本不喜欢“preventDefault()”功能。在被这个咬了几次之后,我添加了一个简单的实用函数:

      //Function to prevent Default Events
      function preventDefaultEvents(e)
      {
          if (e.preventDefault) {
              e.preventDefault();
          } else {
              e.returnValue = false;
          }
      }
      

      你这样称呼它来代替“preventDefault”:

      $("#CancelButton").on("click", function(event) {
          preventDefaultEvents(event);
          return false;
      });
      

      【讨论】:

        【解决方案4】:

        您可以使用“取消”css 类。 例如:<input type="submit" value="Cancel" name="Cancel" class="cancel" />

        JQuery.Validate 在下面的代码中处理其余部分:

        // allow suppresing validation by adding a cancel class to the submit button
        this.find("input, button").filter(".cancel").click(function() {
            validator.cancelSubmit = true;
        });
        

        【讨论】:

          猜你喜欢
          • 2023-04-02
          • 2012-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多