2012-03-16 67 views
2

我有一個這樣的單選按鈕列表;從radiobuttonlist選擇的數字文本框控件

<asp:RadioButtonList ID="RadioButtonFirm" runat="server" RepeatDirection="Horizontal"> 
          <asp:ListItem id="option1" runat="server" Value="Firm Code" /> 
          <asp:ListItem id="option2" runat="server" Value="Firm Name" /> 
    </asp:RadioButtonList> 

而且一個asp:Button控件

<asp:Button ID="btnSearchFirm" runat="server" OnClientClick="Validate();" Text="search" OnClick="btnSearchFirm_Click" /> 

和一個文本框

<asp:TextBox ID="txtCriteria" Width="120px" runat="server"></asp:TextBox> 

如果我選擇單選按鈕事務所代碼,用戶只需選擇數字值txtCriteria文本框,否則可以輸入字符串。如何驗證它?

+0

寫一些jQuery。捕捉radiobuttonlist中的'change'事件,並更改驗證。也許創建2個不同的輸入字段,並在事件處理程序中隱藏/顯示它們。 – Rob 2012-03-16 08:03:13

回答

0

有許多方法可以做到這一點:

  1. 只允許用戶輸入數字在文本框中。這是與示例的鏈接。當然,當他們可以輸入字符時,你也必須添加一個條件。 jQuery: what is the best way to restrict "number"-only input for textboxes? (allow decimal points)

  2. 讓他們輸入他們想要的任何內容,並在回發後進行服務器端驗證。

  3. 允許他們輸入他們想要的任何內容,並使用jquery按鈕單擊進行客戶端驗證。

  4. 您可以使用jquery隱藏和顯示數字和字符串文本框,單選按鈕選擇並在數字文本框中添加驗證碼。

無論你選擇做什麼,始終確保你總是有服務器端驗證,以確保絕對的,無論數據在雲數據庫是有效的。另一個原因是,用戶可以禁用它們的JavaScript(不是很常見),也可能是屏幕閱讀器網站的基本版本,因此您的客戶端驗證將被禁用。

-1

將正則表達式驗證器控件添加到頁面。使其無法看到。當您選擇數字選項時,則在後面的代碼中使該正則表達式驗證器控件可見,並且當您選擇其他選項時,確保再次隱藏它。現在,當你點擊按鈕(當選擇數字選項時),它將觸發正則表達式(僅檢查數值)。

+1

驗證不會發揮作用,直到您更改點擊事件的驗證組爲止。 – Pankaj 2012-03-16 08:43:30

0

有幾種方法可以做到這一點,儘管無論你選擇哪條路線,明智的驗證客戶端和服務器端(如果那裏有任何篡改等客戶端)

一個CustomValidator控件看起來像你的情況下合理的選擇,請參閱 http://msdn.microsoft.com/en-us/library/9eee01cx%28v=vs.71%29.aspx

基本上你有一個客戶端JS函數設置arguments.IsValid如果txtCriteria中的值是正確的類型,基於RadioButto的選定值並將通過。如果是,則回發會火,你可以繼續驗證它的服務器端的OnServerValidate方法

+0

驗證器不會讓您在代碼隱藏中移動,直到頁面被驗證。 – Pankaj 2012-03-16 10:15:28

+0

這是正確的 - _IF是,回傳將會fire_ – mike 2012-03-16 10:36:05

+0

回發將永遠不會觸發,直到頁面進行驗證。 OP想要在第二種情況下回發。 – Pankaj 2012-03-16 10:52:44