2012-11-06 90 views
0

我有2個字段,並且只有其他字段中包含「NO」值的內容時,我需要將其中一個字段設置爲必填字段。所以我在網上進行了研究,這就是我最終得到的結果。唯一的問題是我需要的幫助是代碼的第一部分,它稱之爲:.getElementByID。我怎樣才能構建它?或者,如果你可以擺脫一些燈光將是偉大的。我如何根據另一個字段的輸入驗證字段

<script> 
     function Validate(source, args) { 
       if (document.getElementById('<%= TextBox1.ClientID %>').value.toUpperCase() == "NO" && 
       document.getElementById('<%= TextBox2.ClientID %>').value.length == 0) 
         args.IsValid = false; 
       else 
         args.IsValid = true; 
     } 
</script> 
</head> 
<body> 
     <form id="form1" runat="server"> 
     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
     <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
     <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="TextBox2 Should Be Filled" 
       Display="Dynamic" ClientValidationFunction="Validate" OnServerValidate="CustomValidator1_ServerValidate"></asp:CustomValidator> 
     <asp:Button ID="Button1" runat="server" Text="Button" /> 
     </form> 
</body> 
</html> 

protected void Page_Load(object sender, EventArgs e) 
     { 
       if (!Page.IsPostBack) 
       { 
         Page.Validate(); 
         if (!Page.IsValid) 
           Response.Write("TextBox2 should be filled"); 

       } 
     } 

     protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) 
     { 
       args.IsValid = !(this.TextBox1.Text.Equals("NO", StringComparison.CurrentCultureIgnoreCase) && this.TextBox2.Text.Length == 0); 
+0

你在尋找服務器端驗證? – BrOSs

回答

4

的第一個錯誤的視線之內是:

if (!Page.IsPostBack) // <--- here 
{ 
     Page.Validate(); 
     if (!Page.IsValid) 
       Response.Write("TextBox2 should be filled"); 

} 

變化!Page.IsPostBackPage.IsPostBack,因爲它是沒有意義的驗證用戶輸入,如果該頁面未張貼回來呢。

根據你關於你的客戶驗證碼的問題:實際上有什麼問題?你的代碼是否工作,你是否有異常,即使它是無效的,它是否回發?出了什麼問題?

+0

謝謝,我會解決這個問題。我發現在線代碼的腳本部分,所以我不明白它說的是:document.getElementById,所以我不知道如果這是一個函數,我必須寫或什麼...所以這就是我在這裏丟失的地方。 – moe

+0

好的,但是,它是否按預期工作,因爲它一見不明確爲什麼它不應該。 –

+0

我還沒有嘗試,因爲我仍然試圖在代碼中進行更改,所以我可以嘗試它,但無法理解腳本函數如何工作.. – moe

相關問題