使用backbone.js读取多个输入

时间:2013-08-30 16:22:04

标签: javascript jquery backbone.js

我正在玩todos.js backbone.js演示。

在演示中,他们有一个输入文本框,他们从初始化函数中获取数据,如下所示:

<input id="new-todo" type="text" placeholder="Todo item...">

initialize: function () {

        this.input = this.$("#new-todo");

我的问题是,是否可以从3个输入文本框中获取数据而不只是一个?

我可以试试这个,但这似乎不能很好地扩展:

<input id="new-todo1" type="text" placeholder="Todo item...">
<input id="new-todo2" type="text" placeholder="Todo item...">
<input id="new-todo3" type="text" placeholder="Todo item...">

初始化:function(){

    this.input = this.$("#new-todo1");
    this.input =+ this.$("#new-todo2");
    this.input =+ this.$("#new-todo3");

有更好的方法吗?

由于

3 个答案:

答案 0 :(得分:1)

我对Backbone.js不是很熟悉,但你可以使用jQuery循环遍历所有输入并获得它们的价值。

答案 1 :(得分:1)

如果你有:

<input class="todo" type="text" placeholder="Todo item...">
<input class="todo" type="text" placeholder="Todo item...">
<input class="todo" type="text" placeholder="Todo item...">

然后

initialize: function () {

    this.$inputs = this.$(".todos");

将缓存这些输入(不如你所说的那样得到值)。 然后

this.$inputs.each(function() {
  console.log($(this).val());
});

将打印它们的值,或者您可以将它们的值放在如下的数组中:

var values = this.$inputs.map(function() {
  return $(this).val();
});

然后你可以用

从这些值中创建一个字符串
values.join(' ');

或者您可以使用Underscore的{​​{1}}获取额外的样式点:

reduce

答案 2 :(得分:1)

我假设您想从多个输入中获取值,并将它们作为标题放在待办事项中。我建议使用初始化存储对输入的引用:

initialize: function () {
   this.input = this.$("#new-todo");
   ...
}

createOnEntermethod 应更改为:

createOnEnter: function(e) {

   //concatenate the values from all inputs
   var val = "";
   this.input.each(function() {
     val += ($(this).val());
   });

  if (e.keyCode != 13) return;
  if (!val) return;

  Todos.create({title: val});

  //reset all the input elements
  this.input.each(function() {
     $(this).val('');
  });
}

输入元素应该都具有相同的ID - “new-todo”。