javascript - 替换键名称数组输入 jquery

标签 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 中所有输入的输入名称都应该被替换。虽然市场应该保持不变

汽车[v1][标记][12] => 汽车[v2][标记][12]

我怎样才能做到这一点?让自己变得简单并使用我创建的 JSFiddle:https://jsfiddle.net/ra35z8ff/

最佳答案

将 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);
    });
});

关于javascript - 替换键名称数组输入 jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29268557/

相关文章:

javascript - 为什么我的 AJAX 运行了 4 次

javascript - 使用 JavaScript 或 jQuery 从下到上对 Canvas Fill() 进行动画处理

jQuery 函数没有使用变量

javascript - 根据需要表单验证链接字段

javascript - 我无法从我的下划线模板中获取字段

php - 使用javascript动态添加表单元素——不提交

javascript - cordova 应用程序中全屏模式下的纵向 HTML5 视频在 Android 设备上被拉伸(stretch)

javascript - 如何使用 Node 模块从ajax.inc.php页面获取数据?

javascript - 如何在 JavaScript 中提取字符串的一部分

javascript - 无法实现无限滚动