即使存在验证错误,Bootstrap Validator也会提交表单

时间:2014-12-04 18:34:11

标签: jquery html5 twitter-bootstrap jqbootstrapvalidation

我有以下图片,您可以清楚地看到我提交表单后需要该字段。 enter image description here

但是,在提交表单后,它会继续执行JS 中的按钮点击事件,而不是停止表单提交。

我在BootStrap Validator中缺少什么,如果有验证错误,我可以阻止提交表单?

这是我的HTML5 MasterPage相关部分

<script src="../Content/lib/assets/js/validator.js"></script>
<script src="../Content/lib/assets/js/formValidation.js"></script>
<form id="form1" runat="server" data-toggle="validator" class="form-horizontal" role="form">

这是我的JS被初始化,但是在运行时,我得到了我的评论中所述的错误:

 $('#form1').bootstrapValidator({
        live: 'enabled',

        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            txtSPStatusComments: {
                selector: '#txtSPStatusComments',
                validators: {
                    notEmpty: {
                        message: 'The title is required and cannot be empty'
                    }
                }
            }
        }
    });

这是我的HTML5

<div class="modal-body">
  <div class='form-group'>
    <span class="label label-default col-sm-7 col-sm-offset-2">Enter the reason and comments to stop the Shipping Request</span>
    <br />
    <label class="required col-sm-1 control-label" for="txtSPStatusComments">Status Comments:</label>
    <div class="col-sm-9 col-sm-offset-1">
      <textarea id="txtSPStatusComments" rows="5" cols="80" class="form-control height-auto" placeholder="Enter Comments" required></textarea>
    </div>
    <div class="help-block with-errors"></div>
    <div class="hide-text">
      <input type="hidden" id="txtSPStopGridID" />
    </div>
    <div id="SPmessages"></div>
  </div>
</div>
<div class="modal-footer">
  <button type="button" id="btnSPAcceptShippingReq" class="btn btn-primary">Accept</button>
  <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
</div>

编辑 - 使用BootstrapValidator

母版

<head id="Head1" runat="server">
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="description" content="" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title></title>
    <link href="../Content/lib/assets/css/bootstrap.css" rel="stylesheet" />
    <link href="../Content/lib/assets/css/bootstrapValidator.min.css" rel="stylesheet" />
    <link href="../Content/lib/assets/css/datepicker.css" rel="stylesheet" />
    <link href="../Content/assets/css/font-awesome.min.css" rel="stylesheet" />
    <link href="../Content/bootstrap-switch/bootstrap2/bootstrap-switch.min.css" rel="stylesheet" />
    <link rel="Stylesheet" type="text/css" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />
    <link href="../Content/lib/assets/css/js-css-menu.css" rel="stylesheet" />
    <link href="../Content/lib/assets/css/js-css-menu.min.css" rel="stylesheet" />

    <!-- page specific plugin styles -->
    <link rel="stylesheet" href="../Content/assets/css/jquery-ui.min.css" />
    <link rel="stylesheet" href="../Content/assets/css/datepicker.css" />
    <link rel="stylesheet" href="../Content/assets/css/ui.jqgrid.css" />

    <script src="../Scripts/jquery-2.1.0.min.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/jquery-ui.min.js"></script>
    <script src="../Scripts/knockout-3.1.0.debug.js"></script>
    <script src="../Content/lib/assets/js/bootstrap.min.js"></script>
    <script src="../Content/lib/assets/js/bootbox3/bootbox.min.js"></script>
    <script src="../Scripts/modernizr-2.6.2.min.js"></script>
    <script src="../Content/lib/assets/js/jquery.validate.min.js"></script>
    <script src="../Content/lib/assets/js/bootstrapValidator/bootstrapValidator.min.js"></script>

    <%--<script src="Scripts/jquery.jqGrid.min.js"></script>--%>
    <script src="../Scripts/modernizr-2.6.2.min.js"></script>
    <script src="../Content/lib/assets/js/jquery.jqGrid.min.js"></script>
    <script src="../Scripts/json2.min.js"></script>
    <script src="../Content/lib/assets/js/bootstrap-datepicker.min.js"></script>


    <script src="../Scripts/Common.js"></script>
    <script src="../Scripts/DataServices/CreditSourceDocs.js"></script>
    <script src="../Scripts/DataServices/StopPenalize.js"></script>
    <script src="../Scripts/DataServices/PISIQueue.js"></script>
    <script src="../Scripts/DataServices/BalanceReview.js"></script>

    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>

<body class="no-skin">
    <form id="form1" runat="server" data-toggle="validator" class="form-horizontal" role="form">

HTML

<div class='form-group'>                                                    
   <label class="required col-sm-1 control-label" for="txtSPStatusComments">Status Comments:</label>
         <div class="col-sm-9 col-sm-offset-1">
              <textarea id="txtSPStatusComments" name="txtSPStatusComments" rows="5" cols="80" class="form-control height-auto" placeholder="Enter Comments"></textarea>
         </div>
</div>
<div class="modal-footer">
                                                        <button type="submit" id="btnSPAcceptShippingReq" class="btn btn-primary">Accept</button>
                                                        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                                                    </div>

JS

请注意,此函数中的代码将在onDocumentReady事件上执行。我看到它在页面加载完成后执行。

$('#form1').bootstrapValidator({
        submitButtons: 'button[type="submit"]',
        fields: {
            txtSPStatusComments: {
                validators: {
                    notEmpty: {
                        message: 'Status Comments required!'
                    }
                }
            }
        }
    });

0 个答案:

没有答案