2010-08-05 5 views
2

Je souhaite afficher une boîte de dialogue de confirmation lorsqu'une valeur spécifique est sélectionnée dans un fichier asp: DropDownList. Si la boîte de dialogue de confirmation renvoie false (annuler), je veux empêcher l'AutoPostBack.C#: Prévention d'AutoPostBack en fonction d'une boîte de dialogue de confirmation

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

Cependant, il ignore la valeur renvoyée par foo() et effectue la publication.
Le code généré de l'événement onchange est:

foo(); setTimeout ("__ doPostBack ('theDropDownID', '')", 0); Donc en contrôlant fondamentalement le setTimeout que le .net ajoute, fera le travail.

Une idée comment?
Merci!

Répondre

3

Soit

onchange="return foo();" 

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

Ou utiliser les éléments suivants jQuery

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

Je préfère la seconde approche, car il est le javascript discret: tous les comportements est ensemble et il n'y a pas javascript en ligne du tout.

+0

merci l'homme, votre jQuery aidé! – Nir

-1

Définissez la valeur onchange à:

onchange="return foo();" 

qui devrait faire l'affaire normalement.

+0

Merci, j'ai déjà eu une bonne réponse. – Nir

Questions connexes