2009-08-28 6 views
2

Dans mon projet dans l'une des pages, je crée une case à cocher et je fais une tâche côté serveur lorsque la case à cocher change. Ce que je veux, c'est montrer un message de confirmation avant d'aller au code derrière.Appel d'une fonction javascript d'abord, puis événement CheckChanged d'une case à cocher créée dynamiquement

Si j'appelle la fonction javascript, alors elle renvoie true/false (événement onclick) mais ne va pas dans CheckboxCheckChanged.

Je veux que le message de confirmation doit apparaître et en fonction de l'entrée utilisateur, il sera dans l'événement CheckboxCheckChanged dans le code derrière

Répondre

2
CheckBox1.Attributes["onclick"] = "Check();"; 

function Check (elem) 
     { 
      if (window.confirm ("are you sure you want to do this?")) 
      { 
       __doPostBack ('' , ''); 
      } 
      else 
      { 
       return false; 
      } 
     } 
0

J'ai trouvé ce problème deux ou trois fois, lors de l'utilisation ASP: CheckBoxes avec la propriété AutoPostBack définie sur true.

Si cette propriété est vrai, ASP .NET crée un événement onclick laid en ligne sur le code HTML généré comme ceci:

<input id="CheckBox1" type="checkbox" name="CheckBox1" 
onclick="javascript:setTimeout('__doPostBack(\'CheckBox1\',\'\')', 0)" /> 

Donc, si vous définissez à nouveau l'événement onclick, il sera outrepassée, et le PostBack ne se produira pas.

J'ai trouvé une solution de contournement à cela, consiste essentiellement à stocker l'événement onclick d'origine qu'ASP .NET génère, et affecter une nouvelle fonction onclick, qui affichera la confirmation, et si l'utilisateur sélectionne cancel, retournera false, sinon l'événement click original sera exécuté normalement avec le droit objet de contexte et de l'événement, et le postback se produira, par exemple:

window.onload = function() { 
    var checkBox1 = document.getElementById('<%=CheckBox1.ClientID %>'), 
     originalOnClick = checkBox1.onclick; // store original click event 

    checkBox1.onclick = function(e) { 
    if (confirm('Are you sure?')) { 
     originalOnClick.call(this, e); // call the original click with the right 
            // context and event object 
    } else { 
     return false; // cancel the click 
    } 
    }; 
}; 
1

JavaScript Confirmer le case, Voir qui suit, il est très simple et travail:

<asp:CheckBox ID = "cbx_CoBorrNotPresent" runat="server" Text="Not Present" 
AutoPostBack="false" TextAlign="Left" Checked="true" onclick="javascript:ChkClick();" /> 



<script id="igClientScript" type="text/javascript"> 

     function ChkClick() 
     { 
      var checkBox1 = document.getElementById('ctl00_cph_PageContent_cbx_CoBorrNotPresent'); 


      if (confirm('Are you sure?')) 
      { 
       __doPostBack('ctl00$cph_PageContent$cbx_CoBorrNotPresent', ''); 

      } 
      else 
      { 
       return false; 
      } 

     }; 
    </script> 
-1
<asp:CheckBox ID="chkbox" runat="server" AutoPostBack="false" 
       onclick="javascript: SomeFunction();" /> 

Cela aidera. J'ai beaucoup lutté sur celui-ci et j'ai trouvé la solution. Assurez-vous que le texte "onclick" est en minuscules.

Questions connexes