0

divとボタンを作成しました。ボタンをクリックすると、要素のグループ (1 つの選択ボックスと 2 つのテキスト入力を含む) が div に挿入されます。ユーザーはできるだけ多くのグループを追加できます。追加したすべてのグループのデータを入力し終えたら、保存ボタンを押すと、各グループの値が 1 つずつ JSON オブジェクト配列に取り込まれます。しかし、私は各グループから値を取得する方法で立ち往生しているので、助けてください、ありがとう.

div とグループ追加ボタン関数のコード -- AddExtra() を以下に示します。

<div id="roomextra">
</div>

function AddExtra() {
$('#roomextra').append('<div class=extra>' +
'<select id="isInset">' +
'<option value="Inset">Inset</option>' +
'<option value="Offset">OffSet</option>' +
'</select>' + 
'Length(m): <input type="text" id="insetLength">' +
'Width(m): <input type="text" id="insetWidth">' +
'Height(m): <input type="text" id="insetHeight">' +
'</div>');
}

function GetInsetOffSetArray (callBack) {

  var roomIFSDetail = [{
   "IsInset": '' ,
   "Length": '' , 
   "Width": ''  , 
   "Height": ''
  }];

//should get all the value from each group element and write into the array.

callBack(roomIFSDetail);

}
4

4 に答える 4

1

これで何とかなるはずです。ただし、これらのグループを動的に作成する場合は、id 以外のものを使用する必要があります。data-*それらまたは属性にクラスを追加したい場合があります。この場合、クラスを使用しました。それらのクラスをコントロールに追加して、どれがどれであるかがわかるようにします。

var roomIFSDetail = [];
var obj;

// grab all of the divs (groups) and look for my controls in them
$(.extra).each(function(){
  // create object out of select and inputs values
  // the 'this' in the selector is the context. It basically says to use the object
  // from the .each loop to search in. 
  obj = {
           IsInset: $('.isInset', this).find(':selected').val() ,
           Length: $('.insetLength', this).val() ,
           Width: $('.insetWidth', this).val() , 
           Height: $('.insetHeight', this).val()
        }; 
  // add object to array of objects
  roomIFSDetail.push(obj);
});
于 2013-05-07T15:17:55.580 に答える
0

id 属性を使用して、select 属性と input 属性、name 属性を識別しない方がよいでしょう。例えば

 $('#roomextra').append('<div class=extra>' +
     '<select name="isInset">' +
     '<option value="Inset">Inset</option>' +
     '<option value="Offset">OffSet</option>' +
     '</select>' + 
     'Length(m): <input type="text" name="insetLength">' +
     'Width(m): <input type="text" name="insetWidth">' +
     'Height(m): <input type="text" name="insetHeight">' +
     '</div>');
 }

そして、 usr foreach を繰り返します

 $(".extra").each(function() {
     var $this = $(this);
     var isInset = $this.find("select[name='isInset']").val();
     var insetLength = $this.find("input[name='insetLength']").val();
     // ... and go on
 });
于 2013-05-07T15:18:30.267 に答える
-1

$(".extra").each(関数() {

// ここで ctrls から情報を引き出します

});

これにより、すべての余分な div が反復処理され、すべての値を配列に追加できるようになります。

于 2013-05-07T15:04:13.727 に答える