从通过ajax加载的jquery对话框返回值

时间:2013-03-07 09:37:01

标签: jquery asp.net ajax vb.net dom

我希望能够深入了解WAS正在运作的东西,现在却没有,我无法理解为什么。

这是在VB和jquery中使用asp.net。

我有一个页面,我有一个约会选择屏幕,屏幕显示一个分支列表和每个分支使用转发器的可用约会数。

单击其中一个具有指定约会数的块后,jquery通过遍历分支和日期的ajax调用另一个.aspx页面。此页面使用这些来生成表单以显示日期。然后使用通过ajax返回的HTML来填充显示为JQuery对话框的div的HTML元素。

在此对话框中是每个可用时间的链接,点击链接时,名为time_selected的文本框中填充了“[”& Selected_Time& “]”和一个名为time_id的文本框中填充了“|” &安培; Select_Booking_Slot_ID& “ǁ”

在该对话框的初始加载我们有获得对话框(包括文本框)的HTML和使用该分隔符周围的日期和ID来得到我们需要的信息解析它的关闭事件。

现在我强调这个WAS在页面的一个实例上工作,我已经去创建同一页面的移动版本而且它不再有效...也回去比较原始我发现原来没有更长的作品。

返回的HTML不再包含已附加的文本框的内容。

以下是加载选择页面并将其放入主页中关闭事件的对话框中的代码。

        $("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;
            });

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

现在已经解决了,我真的很困惑这个问题,试图向DOM添加额外的元素,然后尝试读取它。我在jQuery中找到了bind函数,所以在ajax加载之后,我将事件绑定到新创建的A标签,并且我正在直接提取我需要的属性。