2014-01-19 128 views
3

当我遇到这个奇怪的问题时,我只是用Meteor.js玩了一下,我有一个带有两个文本框的表单,但不知何故,我的事件没有听到提交。 当我删除一个文本框,一切工作正常...Meteor.js提交事件

下面是我的表单模板:

<template name="new_timer"> 
    <div class="timer timer--empty"> 
     <form id="new_timer"> 
      <input type="text" name="timer__name" class="timer__name" placeholder="Timer name"> 
      <input type="text" name="timer__description" class="timer__description" placeholder="Timer description"> 
     </form> 
    </div> 
</template> 

而且在客户端:

Template.new_timer.events({ 
    'submit form': function(e) { 
     console.log('new timer'); 

     e.preventDefault(); 
    } 
}) 

该好好尝试一下似乎工作,但是当我改变我的模板到以下,它的作品

<template name="new_timer"> 
    <div class="timer timer--empty"> 
     <form id="new_timer"> 
      <input type="text" name="timer__name" class="timer__name" placeholder="Timer name"> 
     </form> 
    </div> 
</template> 

我在这里只是俯视一些非常基本的东西?

+0

你如何提交表单? –

+0

@ PeppeL-G我希望'submit'只会在按下回车键时触发。 (就像你通常如何提交它) –

+2

我不知道它现在应该如何工作,但在过去你必须在表单中有一个提交按钮,以便“通过按回车键提交文本框“功能性工作。 –

回答

1

你可以使用基本上在一个网页中应用提交不适合添加一个事件像

'keyup form': function(e) { 
    if (e.keyCode === 13) { 
     // do something 
    } 
} 

。在这种应用程序中,一切都是基于事件的,你永远不会重新加载页面,所以你永远不会'提交'表单。

'form'标签变得毫无用处,大多数开发人员(包括我)都习惯于保留它,但这不是必需的。

答案有点迟,我希望它能帮助别人!

+0

表单元素并非无用,例如发布数据非常棒(侦听提交事件,而不是关心是否发送按钮已经被按下,或者如果输入键被输入到文本字段中),就像在他的问题中一样。 –

+0

如果您在单页面应用程序中聆听提交事件,您将防止默认过程e.preventDefault() 因此,我不认为这个事件是非常有用的,因为我们阻止了它的默认行为。 – Ageo

+0

无论如何,您的评论是正确的。这样做可能更容易,也可能更多逻辑。 – Ageo

0

我有类似的问题,提交事件不会有更多的投入没有这方面的工作:

<input type="submit" hidden="hidden">