使用“按钮”类型的JQuery验证而不是表单的“提交”类型

时间:2012-08-11 12:17:29

标签: jquery html asp.net-mvc-3 validation button

$('selector')。validation()似乎是为“输入”类型按钮而不是“按钮”类型构建的。如何使用表单中的按钮类型?

@using(Html.BeginForm(new {id="TheForm"}))
{
     // code here
     <input id="TheButton" type="button">
}

JQuery的:

$(document).ready(function() {
      $("#TheForm").validate({
            rules: {
                 "AuditDoc.Title": {
                       required: true
                  }
            }
      });
      $("#TheButton").click(function() {

      });
});

使用这个基本思想,如何让jquery验证使用按钮而不是提交类型按钮?我已经看到了当使用提交类型不满足规则时JQuery自动显示错误消息的示例,但它似乎不适用于按钮类型。我很感激任何建议!

4 个答案:

答案 0 :(得分:7)

$(document).ready(function () {
        $("#TheForm").validate({
            rules: {
                "AuditDoc.Title": {
                    required: true
                }
            }
        });

        $("#TheButton").click(function () {
            if (!$("#TheForm").validate()) { // Not Valid
                return false;
            } else {
                $("#TheForm").submit()
            }
        });

        $('#btnReset').live('click', function (e) {
            //var $validateObj = $('#formId');
            //Or
            var $validateObj = $(this).parents('form');

            $validateObj.find("[data-valmsg-summary=true]").removeClass("validation-summary-errors").addClass("validation-summary-valid").find("ul").empty();
            $validateObj.find("[data-valmsg-replace]").removeClass("field-validation-error").addClass("field-validation-valid").empty();
        });
    });

答案 1 :(得分:5)

$(document).ready(function(){

     $("#myform").validate();
     $("#byuttion").click(function() {

       if($("#myform").valid())
       {
          $("#myform").submit();
       }
       else 
      {
          return false;
      }

      });

});

答案 2 :(得分:4)

一种hackish方式可能是:

$("#TheButton").click(function() {
     $("#TheForm").submit()
});

答案 3 :(得分:2)

除了不支持submit方法外,它与普通输入的工作原理基本相同。 preventDefault只是阻止页面执行默认请求。

$("#TheButton").click(function(event) {
    event.preventDefault(); //or return false
    getData();
});