【问题标题】:C#: Preventing AutoPostBack according to a confirmation dialogC#:根据确认对话框防止 AutoPostBack
【发布时间】:2011-03-25 20:26:14
【问题描述】:

我想在 asp:DropDownList 中选择特定值时显示确认对话框。如果确认对话框返回 false(取消),那么我想阻止 AutoPostBack。

<asp:DropDownList id="theDropDownID" onchange="foo()"></asp:DropDownList>

但是,它忽略了 foo() 的返回值并实际执行回发。
onchange事件的生成代码为:

foo(); setTimeout("__doPostBack('theDropDownID','')", 0);

所以基本上控制 .net 添加的 setTimeout 就可以完成这项工作。

知道怎么做吗?
谢谢!

【问题讨论】:

    标签: c# asp.net drop-down-menu autopostback


    【解决方案1】:

    要么

    onchange="return foo();"
    
    function foo() {
        //do whatever
        return false;
    }
    

    或者使用下面的jQuery

      $(function () {   //equivallent to: $(document).ready(function() {
            $('#theDropDownID').removeAttr('onchange');  
            $('#theDropDownID').change(function(e) {  
                e.preventDefault();  
                if (confirm("do postback?")) {
                 setTimeout('__doPostBack(\'theDropDownID\',\'\')', 0);
                }
            });
       });
    

    我更喜欢第二种方法,因为它是不显眼的 javascript:所有行为都在一起,根本没有内联 javascript。

    【讨论】:

      【解决方案2】:

      尝试将 onchange 值设置为:

      onchange="return foo();"
      

      这应该可以正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-04
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多