2013-03-11 189 views
0

在我的要求中,我需要使用1編輯器和requiredfieldvalidator不能在此編輯器控件上工作。所以我通過單擊一個按鈕通過asp控件驗證器通過javascript和asp.net控件的其餘部分來驗證此控件。服務器端和客戶端驗證可能

我試圖通過aspnet通過aspnet服務器端控制和客戶端驗證來實現服務器端驗證。 我有兩個文本框控件和一個如下提交按鈕:

<div> 
     <asp:TextBox ID="Txt1" runat="server"></asp:TextBox> 
     <asp:RequiredFieldValidator ID="RfvTxt1" runat="server" ErrorMessage="*" ForeColor="Red" 
      ControlToValidate="Txt1"></asp:RequiredFieldValidator> 
     <asp:TextBox ID="Txt2" runat="server"></asp:TextBox> 
     <asp:Button ID="btnsubmit" runat="server" OnClick="btnsubmit_Click" Text="Submit" 
     OnClientClick=" return ss();" /> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
    </div> 



<script src="JS/jquery-1.7.1.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     function ss() { 
      var script = $("#<%=Txt2.ClientID %>").val(); 
      if (script == "") { 
       alert(1); 
       return false; 
      } 
     } 
    </script> 

protected void Page_Load(object sender, EventArgs e) 
    { 
     Label1.Text = "dd"; 
    } 
    protected void btnsubmit_Click(object sender, EventArgs e) 
    { 
     Label1.Text = "ss"; 
    } 

但無論是驗證不起作用。 問題是,當第二個文本框包含文本。即使第一個文本框不包含其文本,頁面回發並運行它的事件。 感謝您的幫助。

+0

定義了ss(),它包含了什麼? – robertc 2013-03-11 17:47:08

+0

先生我更新了代碼 – 2013-03-11 17:50:11

+1

爲什麼不使用requiredfield驗證器爲兩個文本框......我看不出爲什麼它不會工作的原因。 – 2013-03-11 18:36:38

回答

0

您可以使用ValidationGroup與你配合你的控件提交按鈕 ,確保您在巴頓等於True

編輯使用CauseValidation屬性

document.getElementById('<%=txt2.ClientID%>').value; 

試試這個 可以幫助

+0

先生,我已經嘗試做你上面說過的事情,我已經更新了我的最後一期。 – 2013-03-11 18:01:07

+0

好吧,您正在使用母版頁嗎?我的意思是你確定你正確地定位你的文本框? – Mido 2013-03-11 18:08:22

+0

沒有先生..........在我的要求中,我需要使用1編輯器和requiredfieldvalidator不適用於此編輯器控件。所以我通過單擊一個按鈕通過asp控件驗證器通過javascript和asp.net控件的其餘部分來驗證此控件。 – 2013-03-11 18:11:45

1

爲什麼不是2 RequiredFieldValidators,每個TextBox一個?

<div> 
     <asp:TextBox ID="Txt1" runat="server"></asp:TextBox> 
     <asp:RequiredFieldValidator ID="RfvTxt1" runat="server" ErrorMessage="*" ForeColor="Red" 
      ControlToValidate="Txt1"></asp:RequiredFieldValidator> 
     <asp:TextBox ID="Txt2" runat="server"></asp:TextBox> 
     <asp:RequiredFieldValidator ID="RfvTxt2" runat="server" ErrorMessage="*" ForeColor="Red" 
      ControlToValidate="Txt2"></asp:RequiredFieldValidator> 
     <asp:Button ID="btnsubmit" runat="server" OnClick="btnsubmit_Click" Text="Submit" /> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
</div> 

或者,如果你真的想使用自定義的驗證,使用CustomValidator。以下是客戶端和服務器端驗證的示例:

<div> 
     <asp:TextBox ID="Txt1" runat="server"></asp:TextBox> 
     <asp:RequiredFieldValidator ID="RfvTxt1" runat="server" ErrorMessage="*" ForeColor="Red" 
      ControlToValidate="Txt1"></asp:RequiredFieldValidator> 
     <asp:TextBox ID="Txt2" runat="server"></asp:TextBox> 
     <asp:CustomValidator id="CustomValidator1" 
      ControlToValidate="Txt2" 
      ClientValidationFunction="ClientValidate" 
      OnServerValidate="ServerValidation" 
      ErrorMessage="*" 
      ForeColor="Red" 
      runat="server"/> 
     <asp:Button ID="btnsubmit" runat="server" OnClick="btnsubmit_Click" Text="Submit" /> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
</div> 

<script language="javascript"> 
    function ClientValidate(source, arguments) 
    { 
     if (arguments.Value == ""){ 
      arguments.IsValid = true; 
     } else { 
      arguments.IsValid = false; 
     } 
    } 
</script> 

<script runat="server"> 
    void ServerValidation(object source, ServerValidateEventArgs args) 
    { 
     return !String.IsNullOrEmpty(args.Value); 
    } 
</script> 
2

我正在爲您的查詢提供解決方案。 您必須在客戶端驗證功能的其他條件下再次啓用所有服務器驗證。

function ss() 
{ 
var script = $("#<%=Txt2.ClientID %>").val(); 
if (script == "") 
{ 
    alert(1); 
    Page_ClientValidate(); 
    return false; 
} 
else 
{ 
    Page_ClientValidate(); 
} 
} 

OR

只是改變按鈕點擊爲:

保護無效btnsubmit_Click(對象發件人,EventArgs的) { 如果(Page.IsValid) { Label1.Text =「 SS「; } }

相關問題