Вход

Просмотр полной версии : Как сформировать массив из формы по выбору checkbox?


Surlik
08.11.2013, 11:23
Доброго дня!

Помогите разобраться, не соображу! Есть форма с таблицей(для примера):


<form name="test" method="post" action="">
<table >
<tbody>
<tr>
<td > <input type="checkbox" name="ckb[]" value="0"> </td>
<td ><p>Заголовок1</p>
<input type="hidden" value="заголовок 1" name="data[title][]">
<input type="hidden" value="под заголовок 1" name="data[subtitle][]">
<input type="hidden" value="текст 1" name="data[text][]">
</td>
</tr>
<tr>
<td > <input type="checkbox" name="ckb[]" value="1"> </td>
<td ><p>Заголовок1</p>
<input type="hidden" value="заголовок 2" name="data[title][]">
<input type="hidden" value="под заголовок 2" name="data[subtitle][]">
<input type="hidden" value="текст 2" name="data[text][]">
</td>
</tr>
<tr>
<td > <input type="checkbox" name="ckb[]" value="2"> </td>
<td ><p>Заголовок1</p>
<input type="hidden" value="заголовок 3" name="data[title][]">
<input type="hidden" value="под заголовок 3" name="data[subtitle][]">
<input type="hidden" value="текст 3" name="data[text][]">
</td>
</tr>
{....}
</tbody>
</table>
<input type="submit" value="Отправить">
</form>



Как мне получить массив данных из скрытых полей(приходит постом в переменную) изходя из выбранных чекбоксов?
Примерно так:

Array (
"0" = array (
"title" => "заголовок 1"
"subtitle" => "под заголовок 1"
)
"3" = array (
"title" => "заголовок 3"
"subtitle" => "под заголовок 3"
)

)

P.S. Искал но ничего подходящего не нашел или не могу применить

Хотя есть пример как его применить?

$(".db").live("change", function() {
$(this).add($(this).next("label")).add($(this).next().next("br")).remove().insertAfter(".db:last + label + br");
var url = "myurl.php";

var db = $('.db:checked').map(function(i,n) {
return $(n).val();
}).get(); //get converts it to an array

if(db.length == 0) {
db = "none";
}
$.post(url, {'db[]': db}, function(response) {
$("#dbdisplay").html(response);
});
return true;
});


Спасибо!

ksa
08.11.2013, 11:39
Как мне получить массив данных из скрытых полей(приходит постом в переменную) изходя из выбранных чекбоксов?
Примерно так:

Array (
"0" = array (
"title" => "заголовок 1"
"subtitle" => "под заголовок 1"
)
"3" = array (
"title" => "заголовок 3"
"subtitle" => "под заголовок 3"
)

)

Это "массив"? :blink:

Surlik
08.11.2013, 11:50
:lol: :D Ну извините забыл там ", ;"

Array
(
[0] => Array
(
[title] => заголовок 1
[subtitle] => под заголовок 1
)

[3] => Array
(
[title] => заголовок 3
[subtitle] => под заголовок 3
)

)

ksa
08.11.2013, 11:53
Ну извините забыл там ", ;"
То, что ты привел как "образец" вообще ни чем не является, с точки зрения JS...

Как вариант с формированием объекта...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function tmp(Obj) {
var o={};
var keys=['title','subtitle','text']
$(Obj).find(':checked').each(function (){
var od={};
$(this.parentNode.parentNode).find(':hidden').each (function (i){
od[keys[i]]=this.value;
});
o[this.value]=od;
});
console.log(o);
};
</script>
</head>
<body>
<form name="test" method="post" action="" onsubmit='tmp(this); return false;'>
<table >
<tbody>
<tr>
<td > <input type="checkbox" name="ckb[]" value="0"> </td>
<td ><p>Заголовок1</p>
<input type="hidden" value="заголовок 1" name="data[title][]">
<input type="hidden" value="под заголовок 1" name="data[subtitle][]">
<input type="hidden" value="текст 1" name="data[text][]">
</td>
</tr>
<tr>
<td > <input type="checkbox" name="ckb[]" value="1"> </td>
<td ><p>Заголовок1</p>
<input type="hidden" value="заголовок 2" name="data[title][]">
<input type="hidden" value="под заголовок 2" name="data[subtitle][]">
<input type="hidden" value="текст 2" name="data[text][]">
</td>
</tr>
<tr>
<td > <input type="checkbox" name="ckb[]" value="2"> </td>
<td ><p>Заголовок1</p>
<input type="hidden" value="заголовок 3" name="data[title][]">
<input type="hidden" value="под заголовок 3" name="data[subtitle][]">
<input type="hidden" value="текст 3" name="data[text][]">
</td>
</tr>
</tbody>
</table>
<input type="submit" value="Отправить">
</form>
</body>
</html>