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 であるため、私は 2 番目のアプローチを好みます。すべての動作が一緒で、インライン JavaScript はまったくありません。

于 2010-08-05T14:37:27.867 に答える
-1

onchange の値を次のように設定してみてください。

onchange="return foo();"

それは正常にトリックを行うはずです。

于 2010-08-05T14:44:03.013 に答える