Meteor处理具有相同名称的多个输入

时间:2015-12-02 04:09:13

标签: html forms meteor meteor-blaze

如何处理meteor中具有相同名称的多个输入值,并期望事件中的数组。

<input type="text" class="form-control valid" id="companyEmail" name="companyEmail[]">

Save multiple emails

2 个答案:

答案 0 :(得分:1)

到目前为止,在Blaze模板中对事件进行范围调整的最简单方法是在需要捕获事件的级别定义模板。

如果你有:

 <template name="companyEmails">
 {{#each companyEmail}}
   <input type="text" class="form-control valid" id="companyEmail" name="companyEmail[]">
 {{/each}}
 </template>

然后,如果您将事件处理程序附加到 companyEmails 模板,则必须确定哪个input已更改。

如果您将此模式更改为:

 <template name="companyEmails">
 {{#each companyEmail}}
   {{> oneCompanyEmail}}
 {{/each}}
 </template>

 <template name="oneCompanyEmail">
 <input type="text" class="form-control valid" id="companyEmail" name="companyEmail[]">
 </template>

然后,您可以将事件处理程序附加到较低级别的模板,并保证您使用适当的数据上下文在正确的对象上获取正确的事件:

 Template.oneCompanyEmail.events({
   'input #companyEmail': function(ev,err){
     var emailAddress = ev.target.value;
     console.log(this); // will be the value of companyEmail from the #each
   }
 });

答案 1 :(得分:0)

与Meteor一样,您可能在模板范围内工作并动态创建这些输入。

如果是这种情况,您需要为输入创建事件处理程序,然后使用&#34;此&#34;捕获并发使用的输入,这是一个示例:

html文件:

if(Meteor.isClient) {
  Template.emailForm.events({
    'click .addEmail': function(event) {
      console.log(this);
    }
  });
}

在你的js文件中:

{{1}}

看看&#34;这是什么&#34;&#34;并找出如何提取所需的数据位,因为它只代表点击的项目。