C #: предотвращение AutoPostBack в соответствии с диалоговым окном подтверждения - PullRequest
2 голосов
/ 05 августа 2010

Я хочу показать диалоговое окно подтверждения, когда в asp: DropDownList выбрано определенное значение. Если в диалоговом окне подтверждения отображается false (отмена), я хочу запретить AutoPostBack.

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

Однако он игнорирует возвращаемое значение из foo () и фактически выполняет обратную передачу.
Сгенерированный код события onchange:

Foo (); setTimeout ("__ doPostBack ('theDropDownID', '')", 0);

, так что в основном управление setTimeout, которое добавляет .net, сделает эту работу.

Есть идеи как?
Спасибо!

Ответы [ 2 ]

3 голосов
/ 05 августа 2010

Или

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 голосов
/ 05 августа 2010

Попробуйте установить значение замены на:

onchange="return foo();"

это должно делать трюк нормально.

...