2011-12-20 11 views
0

私はjQueryの新機能ですが、.change関数を使用しようとしています。だから私がやっていることは、値がフォーム上で変更されたかどうかを調べることです。私のアプリケーションにはいくつかのマスターページ、更新パネルなどがあります。 (ASP.net)だから私は、マスターページに次のコードを使用しています:ページの更新後にjquery.change関数が起動しない

<asp:HiddenField ID="_Changed" runat="server" Value="false" /> 

     <script> 
      $(":input").change(function() { 
       document.getElementById('_Changed').value = "true"; 
       alert("Change occured"); 
       return false; 
      }); 
     </script> 

これは、すべてのフォームに複数回動作しますが、私は実際にそれを使用しようとしています、それは一度だけ動作する一つの形に。この他のフォームは、非表示フィールドと対話する唯一のフォームです。このページのコードは次のとおりです。

<script> 
function Home_Click() { 
     var boolRetVal = false; 
     if (document.getElementById('_Changed').value == "true") { 
      if (confirm("You have unsaved data do you wish to proceed?")) { 
       boolRetVal = true; 
       document.getElementById('_Changed').value = "false"; 
      } 
     } else { 
      boolRetVal = true; 
      document.getElementById('_Changed').value = "false"; 
     } 

     return boolRetVal; 
    } 
</script> 

<asp:Button ID="btnHome" runat="server" Text="Home" OnClientClick="return Home_Click()" 
            OnClick="btnHome_Click" CausesValidation="false" /> 

だから誰かがホームボタンをクリックしたときに、彼らは確認プロンプトに[OK]をクリックし、画面が.changeクエリが再び実行されることはありません再読み込みします。私はそれがちょうどもう一度実行されないjavascriptのエラーは表示されません。

+0

[誰かがホームボタンをクリックしたときに確認プロンプトに[OK]をクリックし、画面がリロードされる]と言います。 Ajaxがページの重要な部分を変更した場合、リロードがリンクをクリックした場合、またはリロードした場合のリロードを意味しますか? – plauriola

+0

UpdatePanelを使用してUIを更新していますか?または、ポストバックが完全なポストバックですか? –

答えて

0

あなたのページの一部を更新して$(":input").change(...されている場合は、単に最初のページの状態で実行され、リフレッシュにロードされた新しい$(":input")が行われていません。

$(":input").live("change",... 

したがって、新しい入力すべてにバインドされます。

+0

ありがとうございました。それは完璧に働いた。 – cjohns

3

(1.7以上のjQueryを必要とする)次のことを試してみてください。

<script type="text/javascript"> 
    $(":input").on("change", function (e) { 
     e.preventDefault(); 
     $("#<%: _Changed.ClientID %>").val("true"); 
     alert("Change occured"); 
    }); 
</script> 
+0

私は<%:<%=、Response.Write()の基本的に短縮形であるべきだと思う。 –

+0

@ wes.stueve <%:<%=の代わりに使用する必要があります。これは、文字列がエンコードされることを保証します。この動作が望ましくない場所では、<%=がフォールバックです。 –

関連する問題