JQuery确认对话框焦点导致主窗口下拉失去焦点

时间:2012-11-29 15:42:36

标签: jquery jquery-ui dialog jquery-ui-dialog confirmation

我有一个JQuery下拉菜单设置,以便在进行特定选择时,会显示一个确认对话框(也是JQuery),其中包含注释字段和是/否按钮。我希望用户能够在此确认窗口中输入文本并单击是或否,而后台下拉菜单的状态保持不变。

不幸的是,只要我点击确认窗口中的任意位置,后台下拉菜单的状态就会丢失 - 它会回到默认状态。有一些简单的选择来处理这个?制作模态没有任何影响。

以下是我的确认窗口定义:

 $(".change_status").Confirmation({
      header: "#{t.global.conf_header}",
      onload: function(){
        $("#newSync > .date_chooser").each( function(index, element){
          var minDate = new Date().addDays("#{medsync_post_offset}");
          var maxDate = new Date().addDays(100);
          calenderize(element, $(this).next(), null, minDate, maxDate);
        });
      },
      message: function(){
        if ($(this).html()=="#{t.medsync.resume}"){
          $("#activate").show();
          return $("#activate").html();
        }
        if ($(this).html()=="#{t.medsync.hold}"){
          $("#hold").show();
          return $("#hold").html();
        }
        if ($(this).html()=="#{t.medsync.remove}"){
          $("#activate").show();
          return $("#remove").html();
        }
      },

      buttons:
      [
        {text:"#{t.global.button_yes}", label: "Yes_btn", action: function(e)
           {
             //if ($(this).html()=="#{t.medsync.hold}" && $.trim($("input:text.comment:visible").val()).length < 1)
             if($("input.required:visible").size() > 0 && $.trim($("input.required:visible").val()) == "")
             {
               e.stopImmediatePropagation();
               $("input.required:visible").css("border","2px solid red").focus();
             }
             else
             {
               if ($(".required input:text:visible").size()>0 && $.trim($(".required input:text:visible").val()) == "")
               {
                 //e.stopImmediatePropagation();
                 $(".required input:text:visible").css("border","2px solid red !important;").focus();
               }
               else
               {
                 $.post($(this).attr("href"), $("form#sync_form").serialize()+"&"+$("form.status:visible").serialize(), function(response)
                 {
                   if (response=="OK") { window.location.reload(true);}
                 });
               }
             }
           }},
        {text:"#{t.global.button_no}", label: 'No_btn', action: function(){return false;}}
      ]
  });

1 个答案:

答案 0 :(得分:0)

虽然不是一个完美的解决方案和一点点黑客,但您可以存储下拉列表的选定索引和/或将其传递给对话框,然后在对话框关闭时将下拉列表设置为所选索引,并可选择设置重点关注下拉列表。