2010-08-05 44 views
2

我想在asp:DropDownList中選擇特定值時顯示確認對話框。如果確認對話框返回false(取消),那麼我想阻止AutoPostBack。C#:根據確認對話框防止AutoPostBack

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

但是,它忽略了從foo()返回的值並實際執行回發。
onchange事件的生成代碼是:

foo(); setTimeout(「__ doPostBack('theDropDownID','')」,0);

所以基本上控制.net添加的setTimeout將完成這項工作。

任何想法如何?
謝謝!

回答

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在所有。

+0

謝謝你,你的jQuery幫助! – Nir 2010-08-08 11:27:58

-1

嘗試平變化值設置爲:

onchange="return foo();" 

通常應該做的伎倆。

+0

謝謝,我已經得到了很好的回覆。 – Nir 2011-06-27 07:51:17