0

我对骨干真的很陌生,所以这个问题可能看起来有点幼稚。但我试图弄清楚如何在 'el' 上应用 jQuery 来获取输入的值。

基本上我有一个表单,我希望每当用户对输入进行一些更改时,更改的值都会自动保存到模型中。但我无法获得输入值。

在我看来,我有

  events : {
    'change input' : 'updateValue'
  }

然后我有这样的updateValue方法:

  updateValue : function (e) {
    var input = $(this.el).find(input).val();
    console.log(input)
    this.model.updateValue(input);
  }

但我的控制台正在打印undefined。如果我这样做var input = this.el,它可以打印整个el,但是当我尝试这样做find(input)时,它说它不支持该方法。我也试过this.$el了,也不管用。

所以我想知道找到输入值的正确方法是什么,并想知道这是否是自动保存表单信息的正确方法。提前致谢!

编辑:

多亏了 asawyer,我把它改成了它var input = this.$('input').val(),它就像一个魅力。

这也有效:var input = $(e.currentTarget).val()

并查看下面接受的答案以获得一些解释。非常感谢你们=)

4

1 回答 1

2

实际上,这更像是一个 jquery 问题。这就是你的代码应该是这样的:

updateValue : function (e) {
  var input = this.$(":input").val();
  console.log(input)
  this.model.updateValue(input);
}

你错过了输入周围的“”,但我也冒昧地加入了一些主干/jquery技巧。

this.$(":input")方法是$(":input", this.el)在视图元素中查找 jquery 选择器的快捷方式,请参阅文档。在这种情况下,":input" 匹配所有表单输入,包括 textarea、select 等,请参阅jQuery :input selector

Also, if you want to catch all inputs, not just the <input> element, try:

events : {
  'change :input' : 'updateValue'
}
于 2012-08-03T18:14:53.117 回答