在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 事件两次
如何在zend框架中为dojo动态树创建dojo数据onclick事件以实现程序化方法