如何在新选项卡中打开相应页面时禁用按钮

时间:2014-07-08 06:38:59

标签: javascript jquery asp.net-mvc

在我的MVC项目中,我有一个按钮,可以在新选项卡中打开一个页面。单击按钮,将在新页面上打开页面,并且应禁用该按钮。当用户关闭选项卡时,我想启用该按钮。有没有办法在jquery或javascript中做到这一点?我在网上搜索但没有回答。

1 个答案:

答案 0 :(得分:2)

概念性的想法是在外部上下文(模块或全局变量)中维护对打开的窗口的引用,以便可以从代码中轻松访问它。这是一个例子:

var windowsArray = [];

function addWindowInTab() {
    var newWindow = window.open('page.html', '_newtab'); 
    windowsArray[windowsArray.length] = newWindow;
    newWindow.onunload=enableButton;
}

function removeWindowTab(newWindow){
  var idx = array.indexOf(newWindow);
  if(idx != -1) {
    windowsArray.splice(idx, 1);
  }
}

function enableButton(){
  $("#myButton").removeAttr("disabled");
}

//somewhere in MVC page
$(function(){
  $("#buttonOpenWindow").click(function(){
     addWindowInTab();
  });
  //later, when a button should be disabled...
  if (windowsArray.length){
    $("#myButton").attr("disabled", "disabled");
  }
});

另请注意,您可以在此执行一些更高级的检查,例如是否打开了具有特定名称的窗口或是否打开了多个窗口。请记住,为了打开新选项卡,必须调用AddWindowInTab函数以响应用户操作,例如按Ctrl +单击鼠标左键