0

我们有一个 js 函数,它使用 Struts2 将用户从下拉列表中重定向到新页面。这是代码。

启动一切的 Struts2 下拉菜单:

<s:select name="selectName" list="List" listKey="nameCode" headerKey='-1'
listValue="description" headerValue="Please select..."  value="namedValue" onchange="redirectNextPage(this.value)" />

这是接下来触发的重定向函数:

function redirectNextPage(id){
   var page = "<s:url action='<path>.action'/>?<param>="; 
   window.location.href=(page + id); 

 }

我需要使用选择器来捕获 window.location.href 并将其绑定到我的 UnBindWindow 函数。

//Bind Links we dont want to affect
$('a[href^="http://"]').bind('focus', UnBindWindow); //Code not working?

//UnBind Function
    function UnBindWindow(){
        $(window).unbind('beforeunload', ReturnMessage);
    }
...

我错误地认为焦点是我需要的正确 DOM 事件类型。发生的情况是 select 转到 javascript 函数,然后 onbeforeunload 事件在没有调用我的 jQuery 代码的情况下触发。

如何正确地将事件绑定到 window.location.href 以便我可以防止 beforeunload 对话框触发选择下拉菜单,但仍然适用于 jsp 页面上的其他元素?

4

1 回答 1

0

调试后,我意识到 Struts2 标记正在捕获事件并且它没有冒泡让 jQuery 拦截。

我从来没有打过这个代码:

$('select').change(function() {
          alert('This worked!');
    });

但是,现在知道问题所在,我将 unbind 直接放入 redirectNextPage 函数中,它按预期工作。

    $(window).unbind('beforeunload', ReturnMessage);
    window.location.href=(page + id);

我希望这对其他人有帮助。

于 2012-05-04T19:06:14.497 回答