Javascript 为什么此事件会将我送回应用程序的起点?
我正在创建一个Meteor应用程序,它提供了一种类似于向导的体验,每次按下“下一步”按钮都可以从一个模板移动到下一个模板。在很大程度上,它是按设计工作的 然而,在一个页面上,我隐藏了一个HtmlTable的几列,直到用户选择AddotherDate按钮,试图通过选择该按钮来添加或取消隐藏一列,将我送回第一个模板的第1页。这是导致页面/模板消失并将应用程序返回到第一个模板的事件:Javascript 为什么此事件会将我送回应用程序的起点?,javascript,html,css,meteor,meteor-helper,Javascript,Html,Css,Meteor,Meteor Helper,我正在创建一个Meteor应用程序,它提供了一种类似于向导的体验,每次按下“下一步”按钮都可以从一个模板移动到下一个模板。在很大程度上,它是按设计工作的 然而,在一个页面上,我隐藏了一个HtmlTable的几列,直到用户选择AddotherDate按钮,试图通过选择该按钮来添加或取消隐藏一列,将我送回第一个模板的第1页。这是导致页面/模板消失并将应用程序返回到第一个模板的事件: Template.postTravelWizard.events({ 'click #addDate': fu
Template.postTravelWizard.events({
'click #addDate': function(event){
var nextD8 = Session.get('nextDate');
nextD8 = ++nextD8;
Session.set('nextDate', nextD8);
if (nextD8 == 2) {
$("#date2").removeClass("hide");
$("#airfare2").removeClass("hide");
$("#pcm2").removeClass("hide");
$("#reimbursemlg2").removeClass("hide");
$("#rcei2").removeClass("hide");
$("#ot2").removeClass("hide");
$("#parktolls2").removeClass("hide");
$("#confreg2").removeClass("hide");
$("#lodging2").removeClass("hide");
$("#mealsandI2").removeClass("hide");
$("#foreignanddomestic2").removeClass("hide");
$("#miscandenter2").removeClass("hide");
$("#totals2").removeClass("hide");
}
}
}); // Template.postTravelWizard.events
为什么会这样
为了充分披露,以下是相关的HTML和JavaScript以及相关的CSS:
HTML:
使现代化
当nextD8==2时,单步执行我的代码,它似乎删除了应该删除的隐藏类,但在单步执行我的代码后,它转到这里:
return Template._withTemplateInstanceFunc(tmplInstanceFunc, function ()
{
return v.apply(data, args);
});
…然后在这里:
Template._currentTemplateInstanceFunc = oldTmplInstanceFunc;
不是我的代码,而是template.js
使现代化
出于某种原因,如果我将submit类型的输入更改为按钮,则当我在最后一个模板上选择Add Another Date good
但是,它仍然不会使列可见。我是否需要调用invalidate或类似的函数来刷新页面?是否需要“单击添加日期”函数中的event.preventDefault来执行此操作?不确定是什么原因导致此操作。如果您在控制台中尝试Session.getstepNum,这是您所期望的吗?不是“nextDate”,而是“stepNum”?如果这一点发生了变化,您的模板就会改变。也许一个e.stopPropagation,取决于按钮的放置方式,可以解决这个问题。但我只是在猜测,还没有;诺切尼希特;我还没有测试StopperPogation,如果按钮也因为某种原因被触发,我将在那里放置一个断点,首先检查它;最后,我建议在事件处理程序的末尾返回false。除此之外,我被难住了。
.hide {
visibility: hidden;
display: none;
}
return Template._withTemplateInstanceFunc(tmplInstanceFunc, function ()
{
return v.apply(data, args);
});
Template._currentTemplateInstanceFunc = oldTmplInstanceFunc;