2016-07-03 5 views
0

私はSOと他の場所でフォーム入力をクリアするための複数のオプションを試しましたが、これらはすべてコードの中で以下に列挙されていますが、何も動作しないようです。どのフォームを使用するべきかを決めるこのフォームに関する特定のものはありますか?流星でのフォーム入力のクリア

<template name="CompanyAdd"> 
    <div> 
     <form class="form-inline"> 
      <div class="form-group"> 
       {{> inputAutocomplete settings=companySettings id="companyAdd" name="companyAdd" class="input-xlarge" autocomplete="off" placeholder="Add Company"}} 
      </div> 
      <button type="submit" class="btn btn-default company-add">Add</button> 
     </form> 
    </div> 
</template 


Template.CompanyAdd.events({ 
    'submit form': function(e) { 
     e.preventDefault(); 

     var selection = $(e.target).find('[id=companyAdd]').val(); 

     var company = { 
      ticker: selection 
     }; 

     if(Companies.findOne({ticker:selection})) { 
      console.log("Do nothing"); 
     } else { 
      Meteor.call('companyAdd', company, function(error, result) { 
      }); 
     } 
     //event.target.reset(); 
     //e.target.reset(); 
     //target.text.value = ''; 
     //template.find("form").reset(); 
     //document.getElementById("companyAdd").reset(); 
    } 
}); 

答えて

0

に、この私がどうなる作品:

var field = $(e.target).find('[id=companyAdd]'); 
var selection = field.val(); 
... 
field.val('') 

また、すべてのフォームをリセットする場合は、@ JeremyK`s #resetに行ってください。

+0

ありがとう、これは素晴らしい作品です。 – Bren

0

あなたの第二の試み:

e.target.reset(); 

正常に動作する必要があります。動作していない場合は、コンソールにエラーがないかどうかを確認し、ここに報告してください。あなたのコードで

The handler function receives two arguments: event, an object with information about the event, and template, a template instance for the template where the handler is defined.

ます上記のように、あなたのハンドラを定義します。

'submit form': function(e) { 

あなたはイベント引数eの名前、およびテンプレート引数を捨ててきました。

  • eれるイベント
  • e.target
  • に関する情報がリセットフォームを呼び出すための有効な機能であるため、フォーム要素(イベントは'submit form'で定義された)
  • e.target.resetが成功である持っています。

簡単に言うので、あなたの他の試みが失敗しましたイベントは名前event(あなたがeを使用)で定義されたか、渡された、少なくともいないされていない

  • event.target.reset();

  • target.text.value = '';標的であります未定義の変数

  • template.find("form").reset();templateはundeです罰金テンプレート変数を受け取るためにあなたのハンドラの定義を変更した場合、これは動作します('submit form': function(e)これが失敗した
  • document.getElementById("companyAdd").reset();
  • 'submit form': function(e, template)には変更ID companyAddを持つ要素は、入力要素であるため、フォームは、そう .reset()は未定義になりません。あなたが変更することができます私は仮定 - - あなたはクリアしているしたい入力されているあなたは

    var selection = $(e.target).find('[id=companyAdd]').val(); 
    

    を持っていることを考えるとdocument.getElementById("companyAdd").text.value = ''

+0

ありがとうございました。私は 'e.target.reset()'でやってみましたが、それでも動作しません。入力値は実行後も残っています。しかし、コンソールにエラーはありません。 – Bren