0

Struts2を使用して、ドロップダウンからユーザーを新しいページにリダイレクトするjs関数があります。これがコードです。

すべてを開始する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関数に移動し、jQueryコードが呼び出されることなくonbeforeunloadイベントが発生します。

イベントをwindow.location.hrefに適切にバインドして、アンロード前のダイアログが選択ドロップダウンを起動しないようにしながら、jspページの他の要素に対しては機能するようにするにはどうすればよいですか?

4

1 に答える 1

0

デバッグ後、Struts2 タグがイベントをキャプチャしており、jQuery がインターセプトするためにバブリングしていないことに気付きました。

私はこのコードを打つことができませんでした:

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

しかし、今問題を知っているので、バインド解除を直接 redirectNextPage 関数に入れると、期待どおりに機能しました。

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

これが他の誰かに役立つことを願っています。

于 2012-05-04T19:06:14.497 に答える