0

フォーム送信時にhtmlのdom属性を取得してJSON化したいです。

html フォーム要素は次のとおりです。

<div data-role="fieldcontain">
    <fieldset data-role="controlgroup" data-type="vertical" data-mini="true">
        <legend>1、question1?&lt;/legend>
        <input name="yes" id="checkbox5"
        type="checkbox">
        <label for="checkbox5">yes</label>
        <input name="no" id="checkbox16" type="checkbox">
        <label for="checkbox16">no</label>
    </fieldset>
</div>
<div data-role="fieldcontain">
    <fieldset data-role="controlgroup" data-type="vertical" data-mini="true">
        <legend>2、question2?&lt;/legend>
        <input name="below_60" id="checkbox9"
        type="checkbox">
        <label for="checkbox9">60</label>
        <input name="btw_60_80" id="checkbox13" type="checkbox">
        <label for="checkbox13">60-80</label>
        <input name="btw_80_100" id="checkbox14" type="checkbox">
        <label for="checkbox14">80-100</label>
    </fieldset>
</div>

JSON は次のようになります。

[{
    {
        "question": "1、question1?",
        "ask": {
            ["type": "checkbox", "name": "yes", "value": "yes", "isChecked": 0], ["type": "checkbox", "name": "no", "value": "no", "isChecked": 1]
        }
    },{
        "question": "2、question2?",
        "ask": {
            ["type": "checkbox", "name": "below_60", "value": "60", "isChecked": 1], ["type": "checkbox", "name": "btw_60_80", "value": "60-80", "isChecked": 1], ["type": "checkbox", "name": "btw_80_100", "value": "80-100", "isChecked": 1]
        }
    }
 }]
4

2 に答える 2

2

http://api.jquery.com/serialize/があなたを助けることができるように見えます。

于 2012-10-10T17:24:12.407 に答える
0

これを試して:

$(function(){
    var data = [];
    $('fieldset').each(function(){
        var fieldset = $(this);
        var item = { question: fieldset.find('legend').text(), ask: [] };
        fieldset.find('input').each(function(){
            var input = $(this);
            item.ask.push({ type: input.attr('type'), name: input.attr('name'),
                        isChecked: input.is(':checked') ? '1' : '0',
                        value: fieldset.find('[for="' + input.attr('id') + '"]').text() });
        });
        data.push(item);
    });
    console.log(data);
});

デモ: http://jsfiddle.net/Qf3pX/

于 2012-10-10T17:35:14.460 に答える