Собрать массив из таблицы
Всем привет, конец рабочего дня - затуп начался.
есть таблица id data text 0 123 comment соответственно берем все строки:
$('#'+id+' tr').each(function(index, value) {}
Перебираем все td (их кол-во динамическое) внутри input с name (id,data,text)
arrayData=[];
$('#'+id+' tr').each(function(index, value) {
$(this).children('td').children('input').each (function() {
вот тут надо собрать в ассоциативный массив, как ?
});
});
}
т.е. надо собрать - name input'a это имя переменной value input'a это значение переменной... :-E |
т.е. на выходе надо что то вроде:
array { id=>0, data=>123, text=>comment } соответственно с учетом того что строк много, т.е.: array { [0]=>array { id=>0, data=>123, text=>comment } [1]=>array{ id=>1, data=>456, text=>comment2 } } |
для примера, возьмем некий мусор:
<table style="width:100%;font-size:12px;" cellspacing="0" cellpadding="3" id="tableFields_datalist_id"> <tbody> <tr class="selectable" style=""> <td width="30"><input style="width:30px;" type="text" disabled="" value="0" name="id"></td> <td><input style="width:100%;" type="text" value="Alerana" name="data"></td> <td><input type="text" name="text" style="width:100%;"></td> </tr><tr class="selectable" style=""> <td width="30"><input style="width:30px;" type="text" disabled="" value="1" name="id"></td> <td><input style="width:100%;" type="text" value="Redken" name="data"></td> <td><input type="text" name="text" style="width:100%;"></td> </tr><tr class="selectable" style=""> <td width="30"><input style="width:30px;" type="text" disabled="" value="2" name="id"></td> <td><input style="width:100%;" type="text" value="Matrix" name="data"></td> <td><input type="text" name="text" style="width:100%;"></td> </tr><tr class="selectable" style=""> <td width="30"><input style="width:30px;" type="text" disabled="" value="3" name="id"></td> <td><input style="width:100%;" type="text" value="Loreal" name="data"></td> <td><input type="text" name="text" style="width:100%;"></td> </tr> </tbody></table> С массивами в JS у меня туговато, но требуют чтоб все через ajax сохранялось на лету, по другому как передать - хз, только если массивом через POST |
Цитата:
|
V2oD2o,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</script>
<script>
$(function(){
var id = 'tableFields_datalist_id',
arrayData= $.map($('#'+id+' tr'), function(el,i) {
var inp = $('input', el);
return ['id','data','text'].reduce( function(obj, key, indx) {
obj[key] = inp[indx].value;
return obj
},{})
});
$('p').text(JSON.stringify(arrayData))
})
</script>
</head>
<body>
<p></p>
<table style="width:100%;font-size:12px;" cellspacing="0" cellpadding="3" id="tableFields_datalist_id">
<tbody>
<tr class="selectable" style="">
<td width="30"><input style="width:30px;" type="text" disabled="" value="0" name="id"></td>
<td><input style="width:100%;" type="text" value="Alerana" name="data"></td>
<td><input type="text" name="text" style="width:100%;"></td>
</tr><tr class="selectable" style="">
<td width="30"><input style="width:30px;" type="text" disabled="" value="1" name="id"></td>
<td><input style="width:100%;" type="text" value="Redken" name="data"></td>
<td><input type="text" name="text" style="width:100%;"></td>
</tr><tr class="selectable" style="">
<td width="30"><input style="width:30px;" type="text" disabled="" value="2" name="id"></td>
<td><input style="width:100%;" type="text" value="Matrix" name="data"></td>
<td><input type="text" name="text" style="width:100%;"></td>
</tr><tr class="selectable" style="">
<td width="30"><input style="width:30px;" type="text" disabled="" value="3" name="id"></td>
<td><input style="width:100%;" type="text" value="Loreal" name="data"></td>
<td><input type="text" name="text" style="width:100%;"></td>
</tr>
</tbody></table>
</body>
</html>
|
| Часовой пояс GMT +3, время: 09:45. |