1

問題の説明:

ドロップダウンリストとテキストボックスを備えたシンプルなダイアログがあります。ドロップダウンリストの値に応じて、必要な値は、単純なテキスト、日付、またはデータベースからの特定のテキストのいずれかになります。最初のケースでは、私が持っている単純なテキストボックスは問題なく機能します。2番目のケースでは、日付ピッカーが必要です。3番目のケースでは、テキストボックスを保持しますが、オートコンプリート関数を追加します。

私の問題は2番目のケースです。JQuery Datepickerを試しましたが、正常に動作しますが、サーバー側のWeb UIコントロールである別の(フレームワーク固有の)datepickerを使用する必要があります。

ドロップダウンリストから日付タイプを選択すると、テキストボックスを非表示にし(JQueryを使用)、(非表示の)日付ピッカーを表示します。その逆も同様です。非表示は問題なく機能しますが、保存しようとすると、サーバー側の保存機能がDatePickerが非表示になったことを認識できません。これを行う必要がある理由は、現在表示されている日付ピッカーまたはテキストボックスに応じて、DatePickerまたはTextboxから値を保存するタイミングを知りたいためです。

私はcssに関連するすべてを試しましたが、サーバーはそれらの属性を真以外のものとして認識できないようです。

可能な解決策:

1)「ハック」ソリューションを実行して非表示のテキストボックスを追加し、日付ピッカーを切り替えるたびにtrueまたはfalseの文字列を渡すことができます。このようにして、保存時にテキストボックスの値をチェックして、日付ピッカーが非表示になっているかどうかを確認できます。

2)もう1つ(現在テスト中)は、ブール入力を受け取り、datepickerのフレームワークに追加するカスタム可視性属性をtrueまたはfalseに設定するvoid関数を.csファイルに作成することです。日付ピッカーを切り替えるときはいつでも、AJAX呼び出しを使用してその関数を呼び出し、サーバー側の日付ピッカー属性を変更します。しかし、[保存]をクリックするまでこの属性が変更されたままになるのか、それとも何らかの形でデフォルト値に戻るのかはわかりません。

私の質問: 上記の解決策のいずれかがあなたにとって問題ないと思われますか、そしてその理由は何ですか?もっと良いものを思いつくことができますか?

4

2 に答える 2

1

最善の策は、ページに常に3つのフォームコントロールを配置し、選択ボックスのイベントをdisplay使用してjqueryでそれらの状態を切り替えることです。changeそうすれば、フォームの検証中に未使用のフォーム要素を削除して、使用済みフィールドを送信するだけで済みます。

または、選択が実行されるたびにフォームのその部分の再印刷を処理するために、ある種のポストバック関数を作成する必要がありますchange

- - 編集 - -

使用できるフォーム検証の例を次に示します。

$('form').submit(function(e){
    e.preventDefault();

    if($('select.group', this).val() == "datepicker"){
        // Remove the other elemnts from the DOM
        $('input.group, textbox.group').remove();
    }

    // Submit the form
    $(this).submit();
});

removeメソッドのjQueryドキュメントは次のとおりです:http: //api.jquery.com/remove/

于 2012-12-07T12:46:17.697 に答える
0

この質問を締めくくるために、Infadelicのコメントが私の問題を解決したものでした。より明確にするためにそれを受け入れるための答えとしてそれを投稿しています。

ドロップダウンリストの選択項目を区別してみませんか?そこに情報があり、どの値を保存する必要があります。

やっぱり思ったより簡単でした。

于 2013-01-04T10:09:11.720 に答える