如何在添加/删除文本字段和表单JSON中获取所有文本字段的值

时间:2014-07-31 14:19:05

标签: javascript jquery json

我使用插件在添加和删除按钮上复制文本字段。现在,在添加和删除字段后,我想从所有文本字段中形成JSON并在提交时将其POST。 以下是代码 -
脚本

$(function () {

    var scntDiv = $('#p_scents');
    var i = $('#p_scents p').size() + 1;

    $('#addScnt').live('click', function () {
        $('<p><label for="p_scnts"><input type="text" id="p_scnt_' + i + '" size="20" name="p_scnt_' + i + '" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
        i++;
        return false;
    });

    $('#remScnt').live('click', function () {
        if (i > 2) {
            $(this).parents('p').remove();
            i--;
        }
        return false;
    });
});  

FIDDLE可以参考。 我想获取所有文本字段的值并形成JSON。

2 个答案:

答案 0 :(得分:1)

遍历输入字段,获取其值,并将它们推送到JSON.stringify以创建所需的JSON。

function serializeAndPost() {
    var values = [];
    $( '#p_scents input[id^=p_scnt_]' ).each( function ( index, element ) {
        values.push( element.value );
    } );
    var json = JSON.stringify( { "welcomesList": values } );

    // Do your POSTing here
}

更新小提琴: http://jsfiddle.net/tZPg4/11019/

答案 1 :(得分:0)

我不知道这是否是最好的解决方案,因为我正在构建字符串而不是JSON对象,但这是我的解决方案:

HTML

<input type="button" id="btnSubmit" value="Submit"></input>

JS:

$(function () {

    var scntDiv = $('#p_scents');
    var i = $('#p_scents p').size() + 1;

    $('#addScnt').live('click', function () {
        $('<p><label for="p_scnts"><input type="text" id="p_scnt_' + i + '" size="20" name="p_scnt_' + i + '" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
        i++;
        return false;
    });

    $('#remScnt').live('click', function () {
        if (i > 2) {
            $(this).parents('p').remove();
            i--;
        }
        return false;
    });

    $('#btnSubmit').click(function(e) {
        e.preventDefault();
        var str = [];
        $.each($('input[type=text]'), function(i, val) {
            var el = $(this);
            str.push('"' + el.attr("id") + '":"' + el.val() +'"');
        });
        var json_string = "{" + str + "}";
    });
});