Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как сформировать массив из формы по выбору checkbox? (https://javascript.ru/forum/jquery/42760-kak-sformirovat-massiv-iz-formy-po-vyboru-checkbox.html)

Surlik 08.11.2013 11:23

Как сформировать массив из формы по выбору checkbox?
 
Доброго дня!

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

<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

Цитата:

Сообщение от Surlik (Сообщение 280113)
Как мне получить массив данных из скрытых полей(приходит постом в переменную) изходя из выбранных чекбоксов?
Примерно так:
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

Цитата:

Сообщение от Surlik
Ну извините забыл там ", ;"

То, что ты привел как "образец" вообще ни чем не является, с точки зрения 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>


Часовой пояс GMT +3, время: 22:44.