我正在玩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");
有更好的方法吗?
由于
答案 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”。