2017-04-26 26 views
0

我有一個流星形式,當我提交它時,我想要路由到不同的模板。但它不工作如何。表單提交事件並不像它應該那樣工作(流星)

形式的路徑是:本地主機:3000/dateForm

輸入形式是日,月和年生日(無關)的。但是當它提交表單(提交表單事件到位並且有Router.go(「/ display」)存在)時,它只是在地址欄中顯示「http://localhost:3000/dateform?day=25&month=9&year=1996」(在表單中輸入的是1996年25,9日),並且只顯示相同的表單頁面。

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

的HTML代碼在main.html中:

<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

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()的代碼在事件處理程序也不起作用。

這段代碼出了什麼問題?

回答

0

非常高的機會,你應該簡單地阻止形式被實際提交:

event.preventDefault(); 

當用戶按下你的submit按鈕,除了調用事件監聽器,該瀏覽器也提交表單,其默認行爲是重新加載當前頁面。

這可能解釋了爲什麼你的console.log似乎不起作用:控制檯在頁面重新加載時被清除。

+0

謝謝ghybs這麼多。這是唯一一個讓應用程序表現異常的東西。 –

+0

yw,感謝您的反饋。保持良好的工作! – ghybs

相關問題