0

私はフォームを持っています:

<form>
    <input type="text" name="email" >
    <input type="text" name="phone" >
    <input type="button" value="ok" />
</form>

ボタンをクリックすると、フォームの値を対応するモデルにコピーしたいと思います。

値が変更されるたびにモデルに値を自動的にコピーするBackbone.ModelBinderを見つけましたが、それは私が望むものではなく、ボタンがクリックされたときに値をコピーしたいだけです。

4

2 に答える 2

0

フォームが配置されているビューにカスタム関数を記述し、それをokclickイベントにバインドします。

events: {
  ...
  'click input[name="ok"]': 'copyFormToModel'
  ...
},

...

copyFormToModel: function() {
  var email = $('input[name="email"]').val();
  var phone = $('input[name="phone"]').val();

  // Perform some sort of validation

  this.model.email = email;
  this.model.phone = phone;
}

これは最も美しい答えではありませんが、ページに小さなフォームが1つしかない場合は、ライブラリまたはプラグインを使用するのは少しやり過ぎかもしれません。プラグインやライブラリを使用したい場合は、バックボーンフォームでうまくいくと思います。フィールドが更新されるたびにではなく、メソッド呼び出しを使用してフォームにバインドされたモデルを更新する機能があります。

于 2012-07-12T07:33:05.130 に答える
0

このコードは必要かもしれません:</ p>

events: {
  ...
  'click input[value="ok"]': 'collectData2Model'
  ...
},

...
//suppose employee is your model
collectData2Model: function(e) {
    var employee = new Employee();
    var attr = {};
     $('input').each(function(){
            var input = $(this);
            attr[input.attr('name')] = input.val();
      });
       employee.bind('error',function(model,error){
            alert(error);
        });
      // set method will automatically call the model's validate method 
       employee.set(attr);
}
于 2012-07-12T08:16:33.483 に答える