2010-09-23 11 views
1

Pour une raison quelconque dans ie8 lorsque j'exécute cette fonction après un événement onclick, cela entraîne une actualisation de la page. Je ne veux pas que l'actualisation de la page arrive.Actualisation de la page avec événement onclick dans dojo et je ne souhaite pas d'actualisation de page

var edealsButton = dojo.byId("edeals_button"); 
    var edealEmailInput = dojo.byId("edeals_email"); 
    var edealsSignup = dojo.byId("edeals_signup"); 
    var edealsThankYou = dojo.byId("edeals_thankyou"); 
    var currentValue = dojo.attr(edealEmailInput, 'value'); 
    if (currentValue != '' && currentValue != 'Enter your email') { 
     var anim = dojox.fx.flip({ 
      node: edealsSignup, 
      dir: "right", 
      duration: 300 
     }) 
     dojo.connect(anim, "onEnd", this, function() { 
      edealsSignup.style.display = "none"; 
      edealsThankYou.style.display = "block"; 
     }) 
     dojo.connect(anim, "onBegin", this, function() { 

      var criteria = { "emailAddress": '"' + currentValue + '"' }; 
      alert("currentValue " + currentValue); 
      var d = essentials.CallWebserviceMethod('AlmondForms.asmx/SignupEdeal', criteria); 
      d.addCallback(function(response) { 
       var obj = dojo.fromJson(response); 
       alert(obj.d); 
       if (obj != null && obj.d != null) { 
        //alert(obj.d); 
        if (obj.d == false) 
        { 
         var edealSuccess = dojo.byId("edeals_succes_thankyou"); 
         var edealError = dojo.byId("edeals_error_thankyou"); 

         alert("edealError: " + edealError); 
         dojo.style(edealSuccess, "display", "none"); 
         dojo.style(edealError, "display", "inline-block"); 
        } 
        else 
        { 
         var edealSuccess = dojo.byId("edeals_succes_thankyou"); 
         var edealError = dojo.byId("edeals_error_thankyou"); 

         dojo.style(edealSuccess, "display","inline-block"); 
         dojo.style(edealError, "display", "none"); 
        } 
       } 
       else { 
        var edealSuccess = dojo.byId("edeals_succes_thankyou"); 
        var edealError = dojo.byId("edeals_error_thankyou"); 

        dojo.style(edealSuccess, "display", "none"); 
        dojo.style(edealError, "display", "inline-block"); 
       } 
      }); 
     }) 
     anim.play(); 
     edealEmailInput.innerHTML == 'Enter your email'; 
    } 
    else 
    { 
     dojo.attr(edealEmailInput, 'value', 'Enter your email'); 
     dojo.style(edealEmailInput, 'color', '#CC2525'); 
    } 

Répondre

1

Il semble que votre code "d.addCallback" ne soit pas correctement éliminé. Vous pourriez vouloir placer "dojo.stopEvent()" probablement avant le "anim.play();" ligne et voir si cela permettrait d'arrêter la publication.

Depuis le site api.dojotoolkit.org, le dojo.stopEvent() "empêche la propagation et clobbe l'action par défaut de l'événement passé". A partir du site docs.dojocampus.org, ils disent que "dojo.stopEvent (event) empêchera les deux comportements par défaut de toute propagation (bouillonnement) d'un événement."

Bonne chance et j'espère que cela vous aidera.

+0

Il me manquait le dojo.stopEvent (evt) et par conséquent la page exécutait le dojo et ensuite faire un rafraîchissement comme si un bouton de formulaire était pressé. Le dojo.stopEvent (evt) a empêché la page d'actualiser la page sur un bouton d'envoi de formulaire. –