jQuery如何从多个类似的输入字段构建JSON数组

How jQuery build JSON array from multiple similar input fields?

本文关键字:输入 字段 构建 数组 JSON jQuery      更新时间:2023-09-26

我有下面的HTML代码。我想获得第一个地址,然后为每个additionalAddress(x)构建一个漂亮的数组,这样我就可以将它们插入数据库中。这都是jQuery append逻辑的一部分,因此地址可以是无限的。

<div class="controls" id="Locations">
<input class="span7" type="text" placeholder="Full Address" id="Address" style="margin: 0px 5px 5px 0;"><br>
<input class="span3" type="text" placeholder="(555) 555-5555" id="Phone" name="Phone" onkeyup="drawPhone(this);" style="margin: 0px 5px 5px 0;">
<input class="span4" type="text" placeholder="name@mybusiness.com" id="Email" onkeyup="drawEmail(this);"> <i class="icon-plus-sign" id="addAddress"></i>
<span id="additionalAddress1"><br><br>
    <input class="span7" type="text" placeholder="Full Address" id="Address1"><br><input class="span3" type="text" placeholder="(555) 555-5555" id="Phone1" name="Phone"><input class="span4" type="text" placeholder="name@mybusiness.com" id="Email1" > <i class="icon-minus-sign" id="removeAddress"></i></span>
<span id="additionalAddress2"><br><br><input class="span7" type="text" placeholder="Full Address" id="Address2"><br><input class="span3" type="text" placeholder="(555) 555-5555" id="Phone2" name="Phone"><input class="span4" type="text" placeholder="name@mybusiness.com" id="Email2" style="margin: -4px 0px 0 11px;"> <i class="icon-minus-sign" id="removeAddress"></i></span>
<span id="additionalAddress3"><br><br><input class="span7" type="text" placeholder="Full Address" id="Address3"><br><input class="span3" type="text" placeholder="(555) 555-5555" id="Phone3" name="Phone"><input class="span4" type="text" placeholder="name@mybusiness.com" id="Email3"> <i class="icon-minus-sign" id="removeAddress"></i></span>
</div>

如果附加地址的数量是固定的,则可以使用

[
    $("#Address").val(),
    $("#additionalAddress1 > input").val(),
    $("#additionalAddress2 > input").val(),
    $("#additionalAddress3 > input").val()
]

假设您删除了additionalAddressX跨度内的input元素的id。

[edit]如果没有修复,可以使用:

var addresses = [$("#Address").val()];
$("span[id^='additionalAddress'] > input[id^='Address']").each(function(i,e) {
    addresses.push($(e).val());
});

假设additionalAddressX跨度内的input元素具有类似AddressX的id。

var address = new Array();
$("#Locations").find('span[id^="additionalAddress"]').each(function() {
    var temp = " " + $(this).find("input[id^='Address']").val();
    address.push(temp);
});
alert(address);

请参阅演示