我们有一个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对话框触发select下拉列表,但仍然可以用于jsp页面上的其他元素?
答案 0 :(得分:0)
经过调试后,我意识到Struts2标签正在捕获事件,并且它没有为jQuery拦截而冒泡。
我从未打过这段代码:
$('select').change(function() {
alert('This worked!');
});
然而,现在知道这个问题,我将unbind直接放入redirectNextPage函数,它按预期工作。
$(window).unbind('beforeunload', ReturnMessage);
window.location.href=(page + id);
我希望这有助于其他人。