2015-03-18 91 views
0

我有一个由7个问题组成的表单。我用显示器分别问他们:没有。但问题是提交功能不起作用。当我点击它时,它只是重定向回到第一个问题,网址变成 - http://localhost:3000/?problem=&why1=&why2=&why3=&why4=&why5=&solution=&submit-all=Answer。我真的需要这方面的帮助。以下是HTML模板和JavaScript提交函数在Problems集合中提交的代码。为什么在Meteorjs中这个提交函数不起作用?

<template name="submitProblem"> 
 
    <div class="container"> 
 
    <div class="main-page"> 
 
     <form class="text-center"> 
 
     <div id="submit-problem"> 
 
      <input autofocus="autofocus" type="text" name="problem" id="problem" placeholder="What's the problem ?"/> 
 
      <input type="button" id="route" value="Find Its Route" class="route btn btn-sample"> 
 
     </div> 
 

 
     ... 
 
     submit-why1 - submit-why4 
 
     ... 
 

 
     <div id="submit-why5" class="hidden"> 
 
      <input autofocus="autofocus" type="text" id="why5" class="" name="why5" placeholder="This problem exists, because..."/> 
 
      <input type="button" value="Answer" class="btn-success btn answer5"> 
 
      <button class="btn back5 back-btn"><i class="fa fa-arrow-left fa-3x"></i></button> 
 
     </div> 
 

 
     <div id="submit-solution" class="hidden"> 
 
      <input autofocus="autofocus" type="text" name="solution" id="solution" placeholder="What could be the best solution ?"/> 
 
      
 
      <input type="submit" id="submit-all" name="submit-all" value="Answer" class="btn btn-primary submit-all"> 
 

 
      <button class="btn back6 back-btn"><i class="fa fa-arrow-left fa-3x"></i></button> 
 
     </div> 
 
     </form> 
 
    </div> 
 
    </div> 
 
</template>

Template.submitProblem.events({ 
 
    'submit .submit-all':function() { 
 
    event.preventDefault(); 
 
    var problem = $(event.target).find('[name=problem]').val(); 
 
    var why1 = $(event.target).find('[name=why1]').val(); 
 
    var why2 = $(event.target).find('[name=why2]').val(); 
 
    var why3 = $(event.target).find('[name=why3]').val(); 
 
    var why4 = $(event.target).find('[name=why4]').val(); 
 
    var why5 = $(event.target).find('[name=why5]').val(); 
 
    var solution = $(event.target).find('[name=solution]').val(); 
 

 
    Problems.insert({ 
 
     problem: problem, 
 
     why1: why1, 
 
     why2: why2, 
 
     why3: why3, 
 
     why4: why4, 
 
     why5: why5, 
 
     solution: solution, 
 
     submitdate: new Date() 
 
    }); 
 

 
    console.log(problem + why1 + why2 + why3 + why4 + why5 + solution); 
 

 
    Router.go('submitted'); 
 
    } 
 
});

回答

2

您需要将event传递作为第一个参数到您的处理:

submit: function(event) { 
    event.preventDefault(); 
    ... 

否则将不会被定义,默认操作(POST)将不会被阻止,并且您的页面将被重新加载。

+0

谢谢,实际上它没有它,但我只是意识到我必须提交一个表单 - '提交表单':函数(事件)不是像我这样做的按钮,而是在上面的代码中。 – mhlavacka 2015-03-18 21:36:58

+0

是的好点。我修改了解决方案,只是使用'submit',因为'form'在这里是多余的。 – 2015-03-18 22:06:52