2012-05-04 49 views
0

我們有一個用戶使用Struts2的下拉重定向到一個新的頁面js函數window.location.href選擇。這是代碼。如何獲得使用jQuery 1.4.4

啓動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事件類型。會發生什麼是選擇去javascript函數,然後onbeforeunload事件觸發沒有我的jQuery代碼被調用。

如何正確的事件綁定到window.location.href這樣我就可以防止發射了選擇下拉列表中選擇beforeunload對話,但對於jsp頁面上的其他元素還能用嗎?

+0

如果你使用什麼'delegate',而不是'bind' – mgraph

+0

我可以嘗試,但綁定工作了一個按鈕。現在我試圖將其應用於下拉菜單。 –

回答

0

調試後,我意識到,Struts2的標籤被捕獲的事件,它不冒泡的jQuery攔截。

我從來沒有打這個代碼:

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

不過,現在知道這個問題,我把解除綁定直接進入redirectNextPage功能和它的工作如預期。

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

我希望這可以幫助別人。