首先调用javascript函数,然后再动态创建Checkbox的CheckChanged事件

时间:2009-08-28 05:55:59

标签: asp.net javascript javascript-events checkbox

在我的项目中,我正在创建一个复选框并在复选框检查更改时执行一些服务器端任务。我想要的是在转到后面的代码之前显示确认消息。

如果我正在调用javascript函数,那么它返回true / false(onclick事件),但不会进入CheckboxCheckChanged。

我想要显示确认消息,并且根据用户输入,它将进入后面的代码中的CheckboxCheckChanged事件

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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>

答案 2 :(得分:0)

在使用ASP时,我发现了这个问题几次:将AutoPostBack属性设置为true的CheckBoxes。

如果该属性为true,则ASP .NET会在生成的HTML上创建丑陋的内联onclick事件,如下所示:

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

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

我找到了一个解决方法,基本上是存储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
    }
  };
};

答案 3 :(得分:-1)

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

这会有所帮助。我在这个问题上苦苦挣扎并找到了解决方案。 确保“onclick”文本都是小写字母。