在dojo中使用onclick事件刷新页面,我不想刷新页面

Posted

技术标签:

【中文标题】在dojo中使用onclick事件刷新页面,我不想刷新页面【英文标题】:Page refresh with onclick event in dojo and I don't want a page refresh 【发布时间】:2011-04-16 09:25:42 【问题描述】:

由于某种原因,在 IE8 中,当我在 onclick 事件后运行此函数时,它会导致页面刷新。我不希望页面刷新发生。

   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');
   

【问题讨论】:

【参考方案1】:

您的“d.addCallback”代码似乎没有正确处理。您可能想尝试在“anim.play();”之前放置“dojo.stopEvent()”行,看看这是否会停止回发。

来自api.dojotoolkit.org 站点,dojo.stopEvent()“防止传播并破坏传递事件的默认操作”。在docs.dojocampus.org 网站上,他们说“dojo.stopEvent(event) 将阻止这两种默认行为,任何事件的传播(冒泡)。”

祝你好运,希望这对你有所帮助。

【讨论】:

我错过了 dojo.stopEvent(evt),因此页面正在运行 dojo,然后像按下表单按钮一样进行刷新。 dojo.stopEvent(evt) 阻止页面在表单提交按钮上进行页面刷新。

以上是关于在dojo中使用onclick事件刷新页面,我不想刷新页面的主要内容,如果未能解决你的问题,请参考以下文章

dojo.dijit.Button 触发 onclick 事件两次

Dojo Gridx 程序刷新显示没有数据

如何在zend框架中为dojo动态树创建dojo数据onclick事件以实现程序化方法

button的onclick事件导致的XMLHttpRequest 页面刷新

部分刷新触发 XPage 中的 addOnLoad 事件

Dojo 防止来自子节点的 onclick 事件