2012-02-21 4 views
0

私は、ユーザーがデータを保存せずにページからナビゲートする必要があるため、データが保存されていないという警告メッセージが表示される必要があります。私は私のページに2つのリンクを持っています1.ヤフーと2.プロセス。ユーザーがYahooをクリックすると、プロンプトを表示する必要がありますが、ユーザーがプロセスをクリックすると、警告が表示される必要はありません。jQueryを使用してbeforeunloadイベントで送信者オブジェクトを見つける方法は?

以下はコードです。

<html> 
<head runat="server"> 
<title></title> 
<script src="http://localhost/HLC/Scripts/jquery-1.4.2.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    var hasChanged = false; 
    $(window).bind("beforeunload", function (e) { 
     if (hasChanged) { 
      return "Want to close with out saving data?"; 
     } 
    }); 

    $(document).ready(function() { 
     $(':input', document.myForm).bind("change", function() { 
      hasChanged = true; 
     }); 
    }); 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
    Name: 
    <asp:TextBox runat="server" ID="txtName" /> 
    <br /> 
    <a id="redirect" href="http://www.yahoo.com">Click for yahoo.</a> 
    <asp:Button ID="process" Text="Process" runat="server" /> 
</div> 
</form> 
</body> 
</html> 

答えて

0

関数内

if ($(e.target).attr('id')=="redirect") { 
     e.preventDefault(); 
     alert("Want to close with out saving data ?"); 
    } 
+0

$(e.target).ATTR未定義として値を返して: は、しかし、あなたは確認を表示するかどうかを決定するためにいくつかのフラグを使用することができます。 – VIJAY

+0

あなたのタグがid = "redirect"を持っていることがわかりました。したがって、それ($(e.target).attr( 'id'))はidを返すべきです。 –

+0

はい、beforeunload以外のイベントでも同じことが働いています。 – VIJAY

0

をこれを使用してそのターゲットが文書に設定されているので、あなたは、beforeunloadのイベントをトリガ内容を確認することはできません。 (「ID」)

var hasChanged = false; 
var ask = true; 

$(window).bind("beforeunload", function (e) { 
    if (hasChanged && ask) { 
     return "Want to close with out saving data?"; 
    } 
    ask = true; // depending on your processing handling you may want to reset this flag 
}); 

$(document).ready(function() { 
    // bind handler to turn off asking on button click 
    $('#process').click(function() { 
     ask = false; 
    }); 

    $(':input', document.myForm).bind("change", function() { 
     hasChanged = true; 
    }); 
}); 
関連する問題