在C#中的单个表单上同时使用服务器端和客户端验证

时间:2016-11-25 05:33:40

标签: c# jquery client-side-validation server-side-validation

我有一个表单(在aspx页面中),我在同一表单上使用服务器端验证(验证控件)和jQuery验证。

在Textboxes上我使用服务器端验证,在提交按钮上我正在使用jQuery验证。

我在使用两者时遇到问题。

表格: -

sudo rm -rf /private/var/log/asl/*.asl

jQuery代码: -

<form id="form1" runat="server">

<label>Start Date: </label>                                         
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" ControlToValidate="txtstartDate" ForeColor="Red" Text="*" ValidationGroup="onSave" runat="server" ErrorMessage="Enter start date...!!"></asp:RequiredFieldValidator>
<asp:TextBox ID="txtStartDate" runat="server" CssClass="form-control mytxtCalendar" placeholder="Start Date.."></asp:TextBox>

<label> End Date:</label>                                           
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtEndDate" ForeColor="Red" Text="*" ValidationGroup="onSave" runat="server" ErrorMessage="Enter end date...!!"></asp:RequiredFieldValidator>
<asp:TextBox ID="txtEndDate" runat="server" CssClass="form-control mytxtCalendar" placeholder="End Date.."></asp:TextBox>

<asp:Button ID="btnSaveShift" CssClass="btn btn-default" runat="server" Text="Save" ValidationGroup="onSave" OnClick="btnSaveShift_Click" OnClientClick="CheckDateTimes();" />

<asp:ValidationSummary ID="vlsAdd" ValidationGroup="onSave" ForeColor="Red" ShowMessageBox="true" ShowSummary="false" runat="server" />

</form>

我也尝试过以下jQuery函数,但这些函数会停止服务器端验证。

function CheckDateTimes() {
            var Frm_Date = $("#<%=txtStartDate.ClientID %>").val();
            var To_Date = $("#<%=txtEndDate.ClientID %>").val();    

            if (Frm_Date.length > 0 && To_Date.length > 0) {
                if (parseDate(Frm_Date) > parseDate(To_Date)) {
                    alert('Start date can not be greater than to date...!!');
                    $("#<%=txtStartDate.ClientID %>").focus();
                  }
                }
              }

这也是: -

            $("#btnSaveShift").click(function(evt){
            var Frm_Date = $("#<%=txtStartDate.ClientID %>").val();
            var To_Date = $("#<%=txtEndDate.ClientID %>").val();    

            if (Frm_Date.length > 0 && To_Date.length > 0) {
                if (parseDate(Frm_Date) > parseDate(To_Date)) {
                    alert('Start date can not be greater than to date...!!');
                    $("#<%=txtStartDate.ClientID %>").focus();
                    evt.preventDefault();
                  }
                }
              });

2 个答案:

答案 0 :(得分:1)

如果您需要同时使用OnClick和OnClientClick以及相同的按钮,则向OnClientClick函数添加返回true或false。请检查此链接 example

答案 1 :(得分:0)

您需要更改CheckDateTimes方法以返回bool值,然后您可以将JS方法调用更改为OnClientClick="return CheckDateTimes();"如果返回true,则只调用服务器端。如果你需要调用服务器端验证,那么从javascript方法返回true。

检查Asp .NET Button - OnClientClick="return function()" vs OnClientClick="function()"