替换键名称数组输入jquery

时间:2015-03-25 23:37:39

标签: javascript jquery

我有一个奇怪的问题。我们的按钮具有带有id的数据属性。 [v1,v2和v3]。

<table id="table-1" data-car-id="v1">
    <tr><td>Header1</td></tr>
    <tr><td>Content1 <input type="text" name="car[v1][marked][12]" /></td></tr>
    <tr><td>Footer</td></tr>
</table>

<button id="copy-2" data-car-id="v2">Copy Table</button>
<table id="table-2">

</table>

<button id="copy-3" data-car-id="v3">Copy Table</button>
<table id="table-3">

</table>

一小段Javascript将上表的主体复制到最近的一个。 (那很有效)。

$("button[id^='copy']").click(function() {
    var $carId = $(this).attr('data-car-id');
    alert($carId);
    var $prevTable = $(this).prev("table[id^='table-']").prop('innerHTML');
    var $nextTable = $(this).next("table").html($prevTable);
});

但现在是棘手的部分,该tbody中所有输入的输入名称应该被替换。虽然市场应保持不变

car [v1] [已标记] [12] =&gt;汽车[V2] [标记] [12]

我该怎么做?让它变得简单,并使用我创建的JSFiddle:https://jsfiddle.net/ra35z8ff/

1 个答案:

答案 0 :(得分:4)

将HTML复制到下一个table元素后,选择所有子input元素并迭代它们。使用.replace() method将以前的table元素data-car-id属性替换为当前button元素的data-car-id属性。

Updated Example

$("button[id^='copy']").on('click', function () {
    var id = $(this).attr('data-car-id'),
        previousId = $(this).prev('button').attr('data-car-id');
        html = $(this).prev("table[id^='table-']").prop('innerHTML');

    $(this).next("table").html(html).find('input').each(function () {
        this.name = this.name.replace(previousId, id);
    });
});