Javascript Jquery ui选项卡单击选项卡时打开对话框(停止代码)

Javascript Jquery ui选项卡单击选项卡时打开对话框(停止代码),javascript,jquery,jquery-ui,jquery-ui-dialog,jquery-ui-tabs,Javascript,Jquery,Jquery Ui,Jquery Ui Dialog,Jquery Ui Tabs,这是我的密码。我正在尝试停止加载单击的选项卡,直到从对话框中得到响应。此外,如果单击“取消”,我将返回到以前选择的选项卡。目前我设置它的方式创建了一个循环(我用蹩脚的代码打破了这个循环) 正如在我的JSFIDLE示例中看到的,代码确实停止了。但是,在回溯中,您会注意到选项卡确实更改为单击的选项卡,因此如果单击“取消”,回溯将闪烁。我正试图避免这种情况 谢谢 考虑以下几点: <div class="section" id="section-1"> <a href="#myT

这是我的密码。我正在尝试停止加载单击的选项卡,直到从对话框中得到响应。此外,如果单击“取消”,我将返回到以前选择的选项卡。目前我设置它的方式创建了一个循环(我用蹩脚的代码打破了这个循环)

正如在我的JSFIDLE示例中看到的,代码确实停止了。但是,在回溯中,您会注意到选项卡确实更改为单击的选项卡,因此如果单击“取消”,回溯将闪烁。我正试图避免这种情况

谢谢


考虑以下几点:

<div class="section" id="section-1">
  <a href="#myTab-1">Tab 1</a>
</div>
<div class="section" id="section-2">
  <a name="myTab-1"></a>
</div>
<script>
$("#myTab-1").click(function(event){
  event.preventDefault();
  // Do a thing
  return true;
});
</script>
在我的测试中,我继续发现在对话框处于活动状态时加载活动选项卡面板。当我使用
$(“#tabs”).tabs(“选项”、“活动”和“还原到选项卡”)时,这并没有发生


希望有帮助。

欢迎使用堆栈溢出。选项卡使用超链接链接到锚。防止这种情况发生的最佳方法是创建一个
单击
回调,以防止超链接的默认功能。我将在我的回答中展开。谢谢,这非常有帮助。但有一件事我似乎无法工作,那就是如果我单击“确认”,它不会激活已单击的选项卡。我甚至尝试添加一个
$(“#tabs”).tabs(“选项”,“活动”,发送到)
if(数据)之后{
。谢谢。@Micahcafrey应该只需
返回true
就可以在确认后让它进入活动选项卡。我也这么认为,但它不起作用。你能看看你的工作小提琴示例吗?因为在你的示例中,它对我不起作用。再次感谢。@Micahcafrey我认为
返回
是正确的对于匿名
done
函数,它没有将
true
false
传递回
选项卡前重新激活
事件回调。正在寻找
.dispatchEvent()
或类似的方法。@MicahCaffrey还没有。
<div class="section" id="section-1">
  <a href="#myTab-1">Tab 1</a>
</div>
<div class="section" id="section-2">
  <a name="myTab-1"></a>
</div>
<script>
$("#myTab-1").click(function(event){
  event.preventDefault();
  // Do a thing
  return true;
});
</script>
function showDialog() {
  var dfd = $.Deferred();
  var results;
  $('#dialog').dialog({
    dialogClass: "no-close",
    title: "Fanciful Dialog Box",
    modal: true,
    draggable: false,
    buttons: [{
      text: 'Confirm',
      icons: {
        primary: "ui-icon-check"
      },
      click: function() {
        $(this).dialog('close');
        dfd.resolve(true);
      }
    }, {
      text: 'Cancel',
      icons: {
        primary: "ui-icon-cancel"
      },
      click: function() {
        $(this).dialog('close');
        dfd.resolve(false);
      }
    }]
  });
  return dfd.promise();
}

$(function() {
  $("#tabs").tabs().tabs("disable", 3);
  $('.ms-formtable').appendTo($('#tabs-1'));
  $("#tabs").on("tabsbeforeactivate", function(e, ui) {
    e.preventDefault();
    console.log("EVENT: Prevent Default");
    var self = $(this);
    var revertToTab = ui.oldTab;
    var revertToPanel = ui.oldPanel;
    var sendTo = ui.newTab;
    var sendToPanel = ui.newPanel;
    console.log("EVENT: When Dialog is closed.");
    $.when(showDialog()).done(function(data) {
      if (data) {
        console.log("INFO: Dialog Confirmed.");
        $('.ms-formtable').appendTo(ui.newPanel);
        if (self.is("#tabs-2")) {
          //do stuff
        } else if (self.is("#tabs-3")) {
          //do stuff
        } else if (self.is("#tabs-1")) {
          //do stuff
        }
        return;
      } else {
        console.log("INFO: Dialog Cancelled");
        self.blur();
        $("#tabs").tabs("option", "active", revertToTab);
        return false;
      }
    });
  });
});