1

私は、以前は機能していたものについての洞察を期待していますが、現在は機能しておらず、その理由を理解できません。

これは、VBとjqueryでasp.netを使用しています。

アポイントメント選択画面があるページがあります。この画面には、ブランチのリストと、リピーターを使用したブランチごとの利用可能なアポイントメントの数が表示されます。

指定された数の予定があるブロックの1つをクリックすると、jqueryはブランチと日付を通過するajaxを介して別の.aspxページを呼び出します。このページでは、これらを使用して、日付を表示するフォームを生成します。次に、ajaxを介して返されたHTMLを使用して、JQueryダイアログとして表示されるdivのHTML要素にデータを入力します。

このダイアログ内には、利用可能な各時間のリンクがあります。リンクをクリックすると、time_selectedというテキストボックスに「[」&Selected_Time& "]"が入力され、time_idというテキストボックスに「|」が入力されます。&Select_Booking_Slot_ID&"ǁ"

ダイアログの最初のロードでは、ダイアログのHTML(テキストボックスを含む)を取得し、日付とIDを囲む区切り文字を使用してそれを解析し、必要な情報を取得するcloseイベントがあります。

これがページの1つのインスタンスで機能していたことを強調します。同じページのモバイル版を作成しましたが、機能しなくなりました。また、元のページと比較して、元のページが機能しなくなったことがわかりました。

返されたHTMLには、追加されたテキストボックスのコンテンツが含まれなくなりました。

選択ページをロードし、メインページにあるcloseイベントを使用してダイアログに配置するためのコードを次に示します。

        $("a.showslots").click(function () {
            $("#<%=bookingslot_branch.ClientID %>").val($(this).attr('branch'));
            $("#<%=bookingslot_date.ClientID %>").val($(this).attr('date'));
                       $.ajax({
                           url: "appointment_select_small.aspx?slots=" + $(this).attr('id') + "&date=" + $(this).attr('date') + "&branch=" + $(this).attr('branchtext') + "&branchid=" + $(this).attr('branch'),
                           context: document.body
                       }).done(function (data) {
                           $("#Slots").html(data);
                           $("#Panel_Slots").dialog({
                               modal: true,
                               resizable: false,
                               close: function (event, ui) {
                                   var data = $("#Panel_Slots").html();
                                   var test_str = data;

                                   var start_pos = test_str.indexOf('[') + 1;
                                   var end_pos = test_str.indexOf(']', start_pos);
                                   var text_to_get = test_str.substring(start_pos, end_pos);

                               var start_pos1 = test_str.indexOf('ǀ') + 1;
                               var end_pos1 = test_str.indexOf('ǁ', start_pos1);
                               var text_to_get1 = test_str.substring(start_pos1, end_pos1);

                               if (text_to_get.length != 0) {
                                   $("#<%=bookingslot_time.ClientID %>").val(text_to_get);
                                   $("#<%=bookingslot_id.ClientID %>").val(text_to_get1);
                                   $("#<%=btn_bookingslot_click.ClientID %>")[0].click();
                               }
                               //$(this).remove();
                               return false;
                           }
                       }).parent().find('.ui-dialog-titlebar-close').hide();
                       $("#Panel_Slots").dialog('open');
                       $("#Panel_Slots").position({
                           of: window,
                           my: "center center",
                           at: "center center"
                       });
                   });
                   return false;
               });

そして、これがappointment_select_small.aspxのコードです

                $("a.bookappointment").click(function () {
                $("#time_selected").val("[" + $(this).attr('id') + "]");
                $("#time_id").val("ǀ" + $(this).attr('bid') + "ǁ");
                $("#Panel_Slots").dialog('close');
                return false;
            });

どんな助けでもありがたいです、ありがとう。

4

1 に答える 1

0

これは解決されました。DOM に余分な要素を追加してから読み取ろうとすることで、問題を本当に混乱させていました。jQuery で bind 関数を見つけたので、ajax の読み込みに続いて、新しく作成した A タグにイベントをバインドし、必要なプロパティを直接取得しています。

于 2013-03-08T11:14:09.017 に答える