2016-12-24 44 views
1

我在流星中提交表单时遇到问题。我遵循流星的教程,在其他地方看过,但我的按键事件根本不起作用。我有这样的代码在我的HTML文件:流星输入新闻不提交表格

{{> novasessao}} 

<template name="novasessao"> 
    <form class="nova-sessao"> 
     <div class="caixaDadosCliente dadosCliente no-padding"> 
      <label>Nome</label> 
      <input class="inputs" type="text" name="nome" placeholder="Introduza o seu nome" /> 
      <label>Idade(anos)</label> 
      <input type="text" name="idade" placeholder="Introduza a dua idade" /> 
      <label>Género</label> 
      <input type="text" name="genero" placeholder="Introduza o seu sexo" /> 
      <label>Sessão #</label> 
      <input type="text" name="sessao" placeholder="Introduza o número de sessão" /> 
      <label>Data</label> 
      <input type="date" name="data" placeholder="Introduza a data" /> 
      <label>Quem preenche o formulário?</label> 
      <input type="text" name="quemPreenche" placeholder="Introduza quem está a preencher o questionário" /> 
     </div> 
    </form> 
</template> 

这个代码在相关的js文件

Template.novasessao.events({ 
    'submit form': function(event,template){ 
     console.log('reached novasessao.submit form'); 
     console.log(event.target.nome.value); 
     event.preventDefault(); 
    } 
}); 

,但没有控制台输出。没有任何反应,也没有错误

您能否帮我做一些调试..

谢谢!

+0

有您导入您的js文件的顶部HTML文件(在其中定义的模板之一),在其中定义事件? –

+0

是的,它是进口的。测试的顶部js文件 – EFO

回答

0

,您仍然可以提交此表没有提交按钮(如果这是一个仍然是一个要求)。

试试这个:

'keypress form.nova-sessao': function (event) { 
    if (event.which === 13) { 
     event.preventDefault(); 
     const target = event.currentTarget; 
     const nome = target.nome.value; 
     const idade = target.idade.value; 

     console.log('NOME', nome); 
     console.log('IDADE', idade); 
     $(event.target).submit(); 
     console.log('form submitted'); 
    } 
} 
+0

谢谢@ Jeremiah。这实际上打印'表单提交',但是当我尝试获取我的输入值,并插入它们时有一个错误,说'未捕获TypeError:无法读取'Object.keypressFormNovaSessao'的未定义 属性值。像这样:' const的目标= event.target; 常量诺姆= target.nome.value; 常量idade = target.idade.value; .... Clientes.insert({ 诺姆, idade, });' – EFO

+0

您正在寻找'event.currentTarget'。 'event.target'引用用户在触发'keypress'事件时关注的DOM元素。 'event.currentTarget'指向作为事件本身主题的DOM元素。例如:如果你在'nome'输入时按enter,event.currentTarget将会是form.nova-sessao,而event.target会是input [name ='nome']'。 [这是这个概念的一个很好的例子](http://joequery.me/code/event-target-vs-event-currenttarget-30-seconds/)。如果这解决了你的问题,不要忘记接受答案:)。 – Jeremiah

+0

嗨Jeremiah,谢谢你,它正在工作......现在我必须看到如何提交只在最后一个领域,但我仍然有很多要学习。感谢您对目标和currentTarget的解释:-) – EFO

0

活动可与CSS选择器,更改您的代码如下:

Template.novasessao.events({ 
    'submit .nova-sessao': function(event){ 
     event.preventDefault(); 
     console.log(event); 

} 
}); 
+0

谢谢superB,但仍然没有任何反应... – EFO

+0

它只适用于按钮类型提交... – EFO

+0

@EvaOliveiraGonçalves它应该工作,我编辑了答案,试试吧。 – superB