You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery实现点击表格编辑按钮将行数据回填至表单输入框

问题修复

你现有代码的编辑功能存在两个明显问题:

  • 编辑按钮的事件委托绑定错了目标,监听的是删除按钮的.btn_remove类,点击Edit不会触发任何逻辑
  • 事件回调为空,没有做数据读取和表单回填的处理

以下是修复后的完整代码,除了实现你要的点击Edit回填表单功能,还补全了编辑后保存更新的逻辑,HTML部分不需要做任何修改:

修复后JS代码

// 全局变量标记当前编辑的联系人索引,-1为默认新增状态
let editIndex = -1;
var myContacts = [];
$(document).ready(function () {
    let btn = $("#btn-1");
    let btn2 = $("#btn-2");
    let btn3 = $("#btn-3");

    btn.click(function () {
        let name = $("#name");
        let age = $("#age");
        let job = $("#job");
        let address = $("#address");
        let mobile = $("#mobile");
        if (name.val().length > 0 && age.val().length > 0 && job.val().length > 0 && address.val().length > 0 && mobile.val().length > 0) {
            let contact = {
                name: name.val(),
                age: age.val(),
                job: job.val(),
                address: address.val(),
                mobile: mobile.val()
            }
            // 区分新增/编辑状态
            if(editIndex === -1){
                myContacts.push(contact)
            }else{
                myContacts[editIndex] = contact;
                // 保存后重置为新增状态
                editIndex = -1;
            }
        }else{
            alert("plz fill the form")
        };
        // 清空表单
        $("#name").val("");
        $("#age").val("");
        $("#job").val("");
        $("#address").val("");
        $("#mobile").val("");
        // 刷新列表
        showMyContacts(myContacts);
        console.log(myContacts);
    });
    btn2.click(function () {
        showMyContacts(myContacts);
    });
    $(document).on('click', ".btn_remove", function () {
        let index = $(this).data("index");
        myContacts.splice(index, 1);
        showMyContacts(myContacts);
    });
    // 修正编辑按钮事件绑定
    $(document).on('click', ".btn_edit", function () {
        // 获取当前行对应联系人索引
        let index = $(this).data("index");
        let currentContact = myContacts[index];
        // 数据回填到表单
        $("#name").val(currentContact.name);
        $("#age").val(currentContact.age);
        $("#job").val(currentContact.job);
        $("#address").val(currentContact.address);
        $("#mobile").val(currentContact.mobile);
        // 标记当前编辑的索引
        editIndex = index;
    });
});
function showMyContacts(myContacts) {
    let table = $("#my_table tbody");
    table.html("");
    for (let i = 0; i < myContacts.length; i++) {
        table.append(`
        <tr>
            <td>${myContacts[i].name}</td>
            <td>${myContacts[i].age}</td>
            <td>${myContacts[i].job}</td>
            <td>${myContacts[i].address}</td>
            <td>${myContacts[i].mobile}</td>
            <td><button data-index="${i}" class="btn btn-danger btn_remove">Remove</button></td>
            <td><button data-index="${i}" class="btn btn-primary btn_edit">Edit</button></td>
        </tr>
        `);
    };
};

HTML代码(保持原样即可)

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container m-5">
    <div class="row">
        <div class="col-md-6">
            <span>Name :</span>
            <input id="name" type="text" class="d-flex mb-3">
            <span>Age :</span>
            <input id="age" type="number" class="d-flex mb-3">
            <span>Job :</span>
            <input id="job" type="text" class="d-flex mb-3">
            <span>Address :</span>
            <input id="address" type="text" class="d-flex mb-3">
            <span>Mobile :</span>
            <input id="mobile" type="tel" class="d-flex mb-3">
            <button id="btn-1" class="mt-2">Save</button>
            <button id="btn-2" class="mt-2">my Contacts</button>
        </div>
        <div class="col-md-6">
            <table id="my_table" class="table">
                <thead>
                    <tr>
                        <th>Name</th>
                        <th>Age</th>
                        <th>Job</th>
                        <th>Address</th>
                        <th>Mobile</th>
                        <th>action</th>
                    </tr>
                </thead>
                <tbody></tbody>
            </table>
        </div>
    </div>
</div>
实现效果
  • 点击任意行的Edit按钮,对应联系人的所有信息会自动填充到上方表单
  • 修改表单内容后点击Save,会直接更新对应联系人条目,不会生成重复数据
  • 保存完成后自动刷新联系人列表,表单清空回到新增状态

内容的提问来源于stack exchange,提问作者Amir Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:21:15