0

我對骨幹真的很陌生,所以這個問題看起來有點幼稚。但我想弄清楚如何在'el'上應用jQuery來獲取輸入的值。在backbone.js的'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()

,看看下面的一些解釋接受的答案。非常感謝你們=)

+1

我想這是你想要什麼:http://documentcloud.github.com/backbone/#View -dollar – asawyer 2012-08-03 18:00:52

+0

謝謝@asawyer!我嘗試了'var input = this。$(「input」).val();'它工作。 – aforaudrey 2012-08-03 18:08:46

+0

太棒了!寫下你的解決方案作爲答案,並接受它! :) – asawyer 2012-08-03 18:09:18

回答

2

這實際上更多的是一個jQuery的問題。這是你的代碼應該是什麼樣子:

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

你失蹤了「」周圍的輸入,但我參加了幾個骨幹/ jQuery的投擲技巧,以及的自由。

this.$(":input")方法是$(":input", this.el)的快捷方式,它查找視圖元素中的jquery選擇器,請參閱the documentation。在這種情況下,「輸入」匹配包括textarea,select等在內的所有表單輸入,請參閱jQuery :input selector

另外,如果你想趕上所有的輸入,而不僅僅是<input>元素,嘗試:

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

啊,花了太長時間添加引用的答案,asawyer打我:) – 2012-08-03 18:15:56

+0

讓我試試你的,如果它的工作,我會接受=)。不要覺得自己接受我自己的回答哈哈。 – aforaudrey 2012-08-03 18:17:11