2009-08-28 9 views
2

私のプロジェクトでは、チェックボックスを作成し、チェックボックスのチェックが変更されたときにサーバーサイドタスクを実行しています。私が望むのは、コードの背後に行く前に確認メッセージを表示することです。最初にjavascript関数を呼び出すとCheckboxのCheckChangedイベントが動的に生成される

JavaScript関数を呼び出すとtrue/false(onclickイベント)が返されますが、CheckboxCheckChangedには入りません。

私はASPを使用しているとき、私は、この問題を数回を見つけた確認メッセージが表示され、ユーザーの入力に応じて、それが

答えて

2
CheckBox1.Attributes["onclick"] = "Check();"; 

function Check (elem) 
     { 
      if (window.confirm ("are you sure you want to do this?")) 
      { 
       __doPostBack ('' , ''); 
      } 
      else 
      { 
       return false; 
      } 
     } 
0

の後ろにコードでCheckboxCheckChangedイベントの内側に行こうとしますチェックボックスをAutoPostBackプロパティをtrueに設定します。

そのプロパティがtrueの場合、ASP .NETは醜いインラインこのように生成されたHTML上のonclickイベントを作成:だから

<input id="CheckBox1" type="checkbox" name="CheckBox1" 
onclick="javascript:setTimeout('__doPostBack(\'CheckBox1\',\'\')', 0)" /> 

を再度のonclickイベントを設定した場合、それは上書きされ、ポストバックは発生しません。

これは、基本的にASP .NETが生成する元のonclickイベントを保存し、新しいonclick関数を割り当てて確認を表示し、ユーザーがキャンセルを選択するとfalseを返します例えば、オリジナルのクリックイベントが右コンテキストとイベントオブジェクトを正常に実行され、ポストバックが発生します。

window.onload = function() { 
    var checkBox1 = document.getElementById('<%=CheckBox1.ClientID %>'), 
     originalOnClick = checkBox1.onclick; // store original click event 

    checkBox1.onclick = function(e) { 
    if (confirm('Are you sure?')) { 
     originalOnClick.call(this, e); // call the original click with the right 
            // context and event object 
    } else { 
     return false; // cancel the click 
    } 
    }; 
}; 
1

JavaScriptは、チェックボックスを確認し、それは非常にシンプルで働いている以下を参照してください。

<asp:CheckBox ID = "cbx_CoBorrNotPresent" runat="server" Text="Not Present" 
AutoPostBack="false" TextAlign="Left" Checked="true" onclick="javascript:ChkClick();" /> 



<script id="igClientScript" type="text/javascript"> 

     function ChkClick() 
     { 
      var checkBox1 = document.getElementById('ctl00_cph_PageContent_cbx_CoBorrNotPresent'); 


      if (confirm('Are you sure?')) 
      { 
       __doPostBack('ctl00$cph_PageContent$cbx_CoBorrNotPresent', ''); 

      } 
      else 
      { 
       return false; 
      } 

     }; 
    </script> 
-1
<asp:CheckBox ID="chkbox" runat="server" AutoPostBack="false" 
       onclick="javascript: SomeFunction();" /> 

これが役に立ちます。私はこれに多くの苦労をして解決策を見つけました。 "onclick"のテキストがすべて小文字であることを確認してください。

関連する問題