0

asp.net ユーザー コントロール内に jquery datepicker があります。

変更インジケーターを設定する必要があります (onchange である必要はありません。コントロールを含むページの .aspx から参照して、そのコントロールに固有の JavaScript を実行できる限り、任意のイベント名でかまいません)。カレンダーで新しい日付を選択するとページに表示されます)。

これは、日付ピッカーを初期化するための JavaScript です。

    calendarcontrol.datepicker({
        altField: calendarcontroldate,
        navigationAsDateFormat: true,
        onSelect: function(dateText, inst) { alert(dateText); },
        nextText: 'MM',
        prevText: 'MM'
    });

日付ピッカーは正常に初期化され、上記のように設定すると期待どおりに日付選択でアラートがポップアップしますが、制御パラメーターを介して渡すか、ページの JavaScript 関数を直接呼び出してページに送信しようとすると、まったく発火しませんでした。

内部カレンダー選択のコントロール イベントを設定するには、どうすればよいですか? 私はコントロールを美しく機能させています。最後に必要なのは、ユーザー コントロールで新しい日付が選択されたときに、ページにイベントを表示することです。

どうもありがとう。私は良くなっていますが、jquery はまだ私にとってかなり不可解です。

編集:わかりました、次のように機能しました:

    // init main datepicker
    calendarcontrol.datepicker({
        altField: calendarcontroldate,
        navigationAsDateFormat: true,
        onSelect: window[hfSelectDate],
        nextText: 'MM',
        prevText: 'MM'

    });

ここで、hfSelectDate は関数に渡された文字列です (パラメーターを使用して設定したので、aspx で使用できます)。

私を正しい方向に向けてくれてありがとう!

4

2 に答える 2

1

onchange元のテキスト入力要素にイベントを追加するだけです。そのイベントは、カレンダーから新しい日付が選択されるか、日付が手動で入力されるたびに発生します。

jQuerychange()メソッドを使用して、そのイベントハンドラーをアタッチすることもできます。

calendarcontrol.datePicker({...})
               .change(function() { alert('value changed'); });
于 2013-03-07T17:56:26.203 に答える
1

ページを設定した方法があなたを噛んでいるようです.投稿されたリンクで行ったように、aspxページで日付ピッカーを初期化します.aspxページで日付ピッカーを初期化すると、何も送信することを心配する必要はありませんaspxページを完全に制御できるため、select関数はaspxページの必要な場所で正確にトリガーされ、その関数内で他のことを直接実行します。何も送信する必要はありません。

1. ascx コントロールの datepicker を持つテキスト ボックスに css クラスをアタッチします。

ascx

 <asp:UpdatePanel runat="server">
    <ContentTemplate>
   <asp:TextBox ID="TextBox1" runat="server" CssClass="myclass"></asp:TextBox>
  </ContentTemplate>
  </asp:UpdatePanel>

2.マスターページでは、添付のcssクラスを参照します。更新パネルを処理するために、日付ピッカーを2回初期化しました。 aspx

        <script type="text/javascript">
        $(document).ready(function () {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_initializeRequest(InitializeRequest);
        prm.add_endRequest(EndRequest);
        // Place here the first init of the DatePicker   

        $('.myclass').datepicker({
            altField: "",
            navigationAsDateFormat: true,
            onSelect: function (dateText, inst) {

               //here directly excute further javascript code.Piece of cake.
             .

            },
            nextText: 'MM',
            prevText: 'MM'
        });


    });

    function InitializeRequest(sender, args) { }
    function EndRequest(sender, args) {
        // after update occur on UpdatePanel re-init the DatePicker 

        $('.myclass').datepicker({
            altField: "",
            navigationAsDateFormat: true,
            onSelect: function (dateText, inst) {
              //here directly excute further javascript code.Piece of cake.


            },
            nextText: 'MM',
            prevText: 'MM'
        }) ;


    }

于 2013-03-07T20:22:00.703 に答える