2012-03-16 7 views
2

私はこのようなラジオボタンリストを持っています。ラジオボタンリストの選択による数字のテキストボックスコントロール

<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:ボタンコントロール

<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

答えて

0

これを行うにはいくつかの方法があります:

  1. は、ユーザーが番号を入力するだけを許可しますテキストボックスに。この例とのリンクがあります。もちろん、文字を入力できるときに条件を追加する必要があります。 jQuery: what is the best way to restrict "number"-only input for textboxes? (allow decimal points)

  2. 投稿者は希望どおりに入力し、投稿時にサーバー側の検証を行います。

  3. ボタン入力時にjqueryを使用してクライアント側の検証を行います。

  4. ラジオボタンの選択でjqueryを使用して数字と文字列のテキストボックスを非表示にし、数字のテキストボックスにバリデータを追加することができます。あなたが行うことを選択どのような

、常にあなたはいつもどんなデータがデータベースに行くことは有効である絶対にあることを確認するために、サーバー側の検証を持っていることを確認してください。もう1つの理由は、ユーザーが自分のJavaScriptを無効にしたり(あまり一般的ではありません)、スクリーンリーダーのためのウェブサイトの基本バージョンを持つことができるため、クライアント側の検証が無効になります。

-1

正規表現バリデータコントロールをページに追加します。それを見えなくする。数値オプションを選択すると、コードビハインドでこの正規表現のバリデータコントロールが表示され、他のオプションを選択した場合は、再度それを非表示にしてください。ボタンをクリックすると(数値オプションが選択されている場合)、正規表現が実行されます(数値のみを確認する)

+1

クリックイベントの検証グループを変更するまで、検証は行われません。 – Pankaj

0

これを行う方法はいくつかありますが、どちらのルートを選択するかはおそらくクライアント側とサーバー側の両方を検証するために賢明な(場合には任意の改ざんなどのクライアント側をtheresの)

AのCustomValidatorコントロールは、あなたのシナリオのための合理的な選択のように見え、 http://msdn.microsoft.com/en-us/library/9eee01cx%28v=vs.71%29.aspx

を参照してください基本的には、クライアント側を持っていると思いますargumentsを設定するJS関数。txtCriteriaの値がRadioButtoの選択された値に基づいて正しいタイプである場合はTrueです。確認してください。もしそうであれば、OnServerValidate方法では、サーバー側のポストバックが発生しますと、あなたは先に行くと、それを検証することができ

+0

Validatorは、ページが検証されるまで、Code Behindで移動することはできません。 – Pankaj

+0

これは正しいです - もしそうなら、ポストバックは起動します。 – mike

+0

ポストバックは、ページが検証されるまで実行されません。 OPは2番目のケースでポストバックしたい – Pankaj

関連する問題