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 のヒントもいくつか追加しました。

このメソッドは、ビュー要素内の jquery セレクターを検索するためthis.$(":input")のショートカットです。ドキュメントを参照してください。この場合の ":input" は、textarea、select などを含むすべてのフォーム入力に一致します。 jQuery :input selectorを参照してください。$(":input", this.el)

<input>また、要素だけでなくすべての入力をキャッチしたい場合は、次を試してください。

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