首先调用Javascript函数,然后动态创建复选框的CheckChanged事件

首先调用Javascript函数,然后动态创建复选框的CheckChanged事件,javascript,asp.net,checkbox,dom-events,Javascript,Asp.net,Checkbox,Dom Events,在其中一个页面的项目中,我正在创建一个复选框,并在复选框更改时执行一些服务器端任务。我想要的是在进入代码隐藏之前显示确认消息 如果我调用Javascript函数,那么它将返回true/false(onclickevent),但不会进入CheckboxCheckChanged 我希望确认消息应该出现,并且根据用户的输入,它将进入“代码隐藏”中的复选框checkChanged事件中。在使用ASP:复选框并将AutoPostBack属性设置为true时,我已经多次发现此问题 CheckBox1.Att

在其中一个页面的项目中,我正在创建一个复选框,并在复选框更改时执行一些服务器端任务。我想要的是在进入代码隐藏之前显示确认消息

如果我调用Javascript函数,那么它将返回true/false(
onclick
event),但不会进入
CheckboxCheckChanged


我希望确认消息应该出现,并且根据用户的输入,它将进入“代码隐藏”中的
复选框checkChanged
事件中。在使用ASP:复选框并将AutoPostBack属性设置为true时,我已经多次发现此问题

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

function Check ( elem )
        {
            if ( window.confirm ( "are you sure you want to do this?" ) )
            {
                __doPostBack ( '' , '' );
            }
            else
            {
                return false;
            }
        }
如果该属性为true,ASP.NET将在生成的HTML上创建一个丑陋的内联onclick事件,如下所示:

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

因此,如果再次设置onclick事件,它将被覆盖,并且不会发生回发

我发现了一个解决方法,基本上是存储ASP.NET生成的原始onclick事件,并分配一个新的onclick函数,它将显示确认,如果用户选择cancel,它将返回false,否则原始的click事件将使用正确的上下文和事件对象正常执行,将发生回发,例如:

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
    }
  };
};
window.onload=function(){
var checkBox1=document.getElementById(“”),
originalOnClick=checkBox1.onclick;//存储原始单击事件
checkBox1.onclick=函数(e){
如果(确认('你确定吗?')){
originalOnClick.call(this,e);//用鼠标右键单击调用原始的
//上下文和事件对象
}否则{
return false;//取消单击
}
};
};

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>

函数ChkClick()
{
var checkBox1=document.getElementById('ctl00_cph_PageContent_cbx_CoBorrNotPresent');
如果(确认('你确定吗?'))
{
__doPostBack('ctl00$cph_页面内容$cbx_CoborNotPresent','');
}
其他的
{
返回false;
}
};

这会有帮助的。我在这个问题上做了很多努力,找到了解决办法。 确保“onclick”文本都是小写字母

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