2016-07-03 3 views
0

Я пробовал несколько вариантов, которые я нашел на SO и в других местах для очистки входных данных формы, все перечисленные ниже в коде, но ничего не работает. Есть ли что-то конкретное в этой форме, которая определяет, какой из них я должен использовать?Ввод формы очистки в Meteor

<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 selection = $(e.target).find('[id=companyAdd]').val(); 

То есть вход вы хотите очистить и что - я полагаю, - работы, я хотел бы сделать:

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.target.reset(); событие не определено или передается в, по крайней мере, не с именем event (вы использовали e)

  • target.text.value = ''; цель неопределенная переменная

  • template.find("form").reset(); это не получается, потому что template isdede оштрафован. Если вы измените свое определение обработчика получить переменный шаблон, это будет работать (изменение 'submit form': function(e) к 'submit form': function(e, template)
  • document.getElementById("companyAdd").reset(); Это терпит неудачу, потому что элемент с идентификатором companyAdd является входным элементом, а не форма, так .reset() не определенно. Вы можете изменить это document.getElementById("companyAdd").text.value = ''
+0

Спасибо за все замечательные детали. Я попробовал снова с 'e.target.reset()', и он все еще не работает, значение ввода остается после выполнения. Однако ошибок в консоли нет. – Bren