2

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

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

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

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

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

知道怎么做吗?
谢谢!

4

2 回答 2

3

任何一个

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。

于 2010-08-05T14:37:27.867 回答
-1

尝试将 onchange 值设置为:

onchange="return foo();"

这应该可以正常工作。

于 2010-08-05T14:44:03.013 回答