首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表单提交事件不能正常工作(Meteor)

表单提交事件不能正常工作(Meteor)
EN

Stack Overflow用户
提问于 2017-04-26 06:34:09
回答 1查看 85关注 0票数 0

我有一个流星形式,当我提交它,我想路由到一个不同的模板。但这并不是怎么回事。

表单的路径是: localhost:3000/dateForm

表格的输入是生日的日期、月份和年份(不相关)。但是,当它提交表单时(提交表单事件已经到位,并且存在Router.go("/display") ),它只是在地址栏中显示"http://localhost:3000/dateform?day=25&month=9&year=1996“(25、9、1996是表单中的输入),并且只显示相同的表单页面。

如何使应用程序路由到不同的模板提交事件?

Main.html中的html代码:

代码语言:javascript
复制
<template name="dateFormPage">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" type="text/css">
  <link rel="stylesheet" href="https://pingendo.com/assets/bootstrap/bootstrap-4.0.0-alpha.6.css" type="text/css">
  <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
  <script src="https://pingendo.com/assets/bootstrap/bootstrap-4.0.0-alpha.6.min.js"></script>
  <div class="py-5">
    <div class="container">
      <div class="row">
        <div class="col-md-12">
          <h1 class="display-1">Enter Your Birthday</h1>
        </div>
      </div>
    </div>
  </div>
  <form>
    <input type="text" placeholder="Day" name="day">
    <input type="text" placeholder="Month(number)" name="month">
    <input type="text" placeholder="Year" name="year">
    <input type="submit" class="btn btn-success">
  </form>
</template>

<template name="display">
  abcderfght
</template>

main.js中的代码

代码语言:javascript
复制
Template.dateFormPage.events({
  'submit form': function(event){
    var day=event.target.day.value.parseInt();
    var month=event.target.month.value.parseInt()-1;
    var year=event.target.year.value.parseInt();
    var today=new Date();
    var toDate=today.getDate();
    var toMonth=today.getMonth();
    var toYear=today.getFullYear();

    function monthDiff(d1, d2) {
    var months;
    months = (d2.getFullYear() - d1.getFullYear()) * 12;
    months -= d1.getMonth() + 1;
    months += d2.getMonth();
    return months <= 0 ? 0 : months;
    }

    var month_diff_raw=monthDiff(new Date(day, month, year), new Date(toDate, toMonth, toYear));

    Session.set("year_diff", month_diff_raw/12);

  },
});

console.log()在事件处理程序中也不工作。

这段代码出了什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-26 06:51:54

很大的机会,你应该简单地阻止表单的实际提交:

代码语言:javascript
复制
event.preventDefault();

当用户按下submit按钮时,除了调用事件侦听器外,浏览器还提交表单,默认操作是重新加载当前页面。

这可能解释了为什么您的console.log似乎无法工作:当页面重新加载时,控制台将被清除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43626675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档