2009-09-11 3 views
6

私のウェブサイトには次のものがあります。ドロップダウンリストから[その他]オプションを選択した場合に必要なテキストを検証する方法は?

ソース[DropDownListコントロール]

サイト

検索エンジン

その他

その他のソース[テキストボックス]

私はASP.Netのバリデータを使用したいです(私はバリデータを比較すると思います)ドロップダウンリストで[その他]が選択され、テキストが入力されていない場合、検証が実行され、ページを送信できません。

これは可能ですか?

ドロップダウンの[その他]オプションの値をstring.emptyに設定して空のテキストボックスと比較しようとしましたが、これが機能しませんでした。

私が継承したことはすべてウィザードコントロール内にあります。それ以外の場合は、自分で検証をトリガーするクライアントスクリプトを作成します。私はウィザードコントロールでこれを行うことはできないと思いますか?

ありがとうございます。

答えて

9

なしのバリデータを使用して、別の制御に基づいて、条件付きの検証を実行することができませんようにあなたは、ドロップダウンリストで選択で、その後誰のオプションを確認してください。ただし、これは、クライアント側、サーバー側、またはその両方で検証を実行するCustomValidatorを使用して行うことができます(少なくとも、サーバー側の検証が推奨されます)。バリデーターはウィザードとうまく連携します。

ASP.NETマークアップ例:ClientValidationFunctionため

<asp:DropDownList ID="OptionsDropDownList" runat="server"> 
     <asp:ListItem Text="Website" /> 
     <asp:ListItem Text="Search Engine" /> 
     <asp:ListItem Text="Other" /> 
    </asp:DropDownList> 
    <asp:TextBox ID="OtherTextBox" runat="server" /> 
    <asp:CustomValidator ID="custvOptionsDropDownList" runat="server" ControlToValidate="OptionsDropDownList" 
     ValidateEmptyText="true" Display="Dynamic" ClientValidationFunction="validateOtherTextBox" 
     ErrorMessage="This field is required!" OnServerValidate="ValidateOtherTextBox" /> 

Javascriptを:

<script type="text/javascript" language="javascript"> 
    function validateOtherTextBox(event, args) { 
     var textbox = document.getElementById('<%= OtherTextBox.ClientID %>').value; 
     if (args.Value == 'Other') 
      args.IsValid = (textbox != ''); 
     else 
      args.IsValid = true; 
    } 
</script> 

コードビハインドOnServerValidate用:

protected void ValidateOtherTextBox(object source, ServerValidateEventArgs args) 
    { 
     if (OptionsDropDownList.SelectedValue == "Other") 
     { 
      args.IsValid = (OtherTextBox.Text.Trim() != ""); 
     } 
    } 

必要なものを実装するのはあなたの選択です。 Javascriptの検証を完全にスキップし、そのコードとClientValidationFunction属性を削除することができます。また、Javascriptは、ClientIDプロパティを使用してターゲットコントロールを参照することに注意してください。これは、ページが出力されたときにASP.NETが別のIDを割り当てて、この方法でJavascriptメソッドに提供する必要があるので必要です(ページのソースを表示すると、コントロール名に余分な接頭辞など)。

0

ASP.NETのこの

if (ddl.selecteditemindex == 1){ 
if (txtvalue.text == "") 
{ 
alert('you write something if selected other otherwise choose from a list'); 
} 
} 
関連する問題