首先调用Javascript函数,然后动态创建复选框的CheckChanged事件
在其中一个页面的项目中,我正在创建一个复选框,并在复选框更改时执行一些服务器端任务。我想要的是在进入代码隐藏之前显示确认消息 如果我调用Javascript函数,那么它将返回true/false(首先调用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
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();" />