2016-12-24 15 views
1

流星でフォームを送信する際に問題が発生しました。私は他の場所で見られる流星からのチュートリアルに従っていますが、私のキー押下イベントは単に機能しません。私は私のhtmlファイルでこのコードがあります関連したJSファイル流星を入力してフォームを送信していない

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

{{> 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> 

と、このコードをしかし、誰コンソール出力を持っていません。何も起こらず、エラーもありません。

あなたは...私はいくつかのデバッグを行う

感謝を助けてくださいでした! (それはまだ要件の場合)

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

} 
}); 
+0

はあなたがイベントを定義するあなたのjsファイルの先頭に、htmlファイル(テンプレートを定義したもの)を輸入したことがありますか? –

+0

はい、インポートされています。 – EFO

答えて

0

あなたはまだ、送信ボタンなしでこのフォームを送信することができます

+0

ありがとう@ Jeremiah。これは実際に 'フォーム提出済み'を出力しますが、入力値を取得しようとすると、 'Uncaught TypeError:未定義のプロパティ値'を 'Object.keypressFormNovaSessao'の で読み込めません。このような: ' CONST対象= event.target; CONSTノーム= target.nome.value; CONST 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

こんにちはエレミア、ありがとう、それは働いている...今、私は最後のフィールドでのみ提出する方法を見なければならないが、まだ学ぶべきことがたくさんある。ターゲットとcurrentTargetについての説明をありがとう:-) – EFO

0

イベントは、以下のようにコードを変更し、CSSセレクタで動作します。

はこれを試してみてください:

'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

スーパーBありがとうございますが、まだ何も起こりません... – EFO

+0

ボタンタイプでのみ動作します... – EFO

+0

@EvaOliveiraGonçalvesそれはうまくいくはずです、私は答えを編集しました。 – superB

関連する問題