JS-Jquery实现动态的add和delete<input type="text">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>JS-demo01.html:JS动态的添加和删除</title>
 
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="../js/jquery-1.3.2.js"></script>
 <script type="text/javascript">
  /*
   *@author Roin.li
   *@time 2012-02-15 12:16:00
   *@decription          <input type="text">实现动态的js"添加","删除"
   */
  function toFpcyAdd(){// 添加
   //var trSize = $("#fpcyTable").find("tr:gt(2)").size();
   var trSize = $("#fpcyTable").find("tr:gt(2)").length;
   if(trSize >= 5){
    alert("添加数据不能超过5条");
    return;
   }
   $("#fpcyTable").find("tr:eq(3)").clone(true).appendTo($("#fpcyTable")).find("input[type='text']").val("").end().find("td:eq(0)").text(trSize + 1).end().find("input:eq(0)").focus();
  }
  
  function toFpcyDelete(obj){// 删除
   debugger;
   var $objparents = $(obj).parents("tr:eq(0)"); // parents的祖先元素是?  是table吗? 不是,看错了,input后面还有个td呢,td之后是tr,所以tr是祖先元素
   var textvalue = $objparents.find("td:eq(0)").text();
   var trsize = $("#fpcyTable tr:gt(2)").size();
   if(trsize > 1){
    $objparents.nextAll("tr").each(function(index,item){
     $(item).find("td:eq(0)").text(textvalue - 0 + index);
    })
    $objparents.remove();
   }
   //alert(111);
   //var textValue = $(this).find("tr:eq(0)").text
   //alert(textValue);
  }
  
  
 </script>
  </head>
 
  <body>
     <table class="commandTable" cellspacing="0px" id="fpcyTable">
   <tr><td class="mb_tit_1" colspan="5"></td></tr>
   <tr><td class="tableCaption" colspan="5">查验条件列表</td></tr>
   <tr><td class="tableTitle" align="center">序号</td><td class="tableTitle">发票代码</td><td class="tableTitle">发票号码</td><td class="tableTitle">操作</td></tr>
   <tr>
    <td class="td_02">1</td>
    <td class="td_02"><input type="text" size="20" name="nfpdm"/></td>
    <td class="td_02"><input type="text" size="20" name="nfphm"/></td>
    <td class="td_02"><a href="javascript:void(0)"><input type="button" id="toFpcyDelete" value="删除" οnclick="toFpcyDelete(this)"/><!-- <img title="删除" alt="删除" src="<c:out value="${pageContext.request.contextPath}"/>/images/table/docdelete.gif" border="0" οnclick="javascript:gotoDelete(this);" /> --></a></td>
   </tr>
  </table>
  <table><tr><td><input type="button" id="toFpcyAdd" value="添加" οnclick="toFpcyAdd()"/></td></tr></table>
  </body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你需要添加一些 JavaScript 代码来实现这些功能。以下是一个简单的实现: ``` // 定义一个数组用于存储联系人数据 let contacts = []; // 获取页面元素 const addBtn = document.querySelector('.add-btn'); const searchInput = document.querySelector('#search-input'); const contactList = document.querySelector('#contact-list'); const pageButtons = document.querySelector('#page-buttons'); const modal = document.querySelector('#modal'); const modalContent = document.querySelector('.modal-content'); const closeBtn = document.querySelector('.close'); const saveBtn = document.querySelector('#save-btn'); const cancelBtn = document.querySelector('#cancel-btn'); // 定义一些常量 const PAGE_SIZE = 10; // 每页显示的联系人数 const MAX_PAGES = 5; // 最多显示的页码数 // 获取指定页码的联系人数据 function getContacts(page) { const start = (page - 1) * PAGE_SIZE; const end = start + PAGE_SIZE; return contacts.slice(start, end); } // 计算总页数 function getTotalPages() { return Math.ceil(contacts.length / PAGE_SIZE); } // 渲染联系人列表 function renderContactList(page) { const contacts = getContacts(page); let html = ''; contacts.forEach(contact => { html += ` <tr> <td>${contact.name}</td> <td>${contact.phone}</td> <td>${contact.email}</td> <td> <button class="edit-btn" data-id="${contact.id}">编辑</button> <button class="delete-btn" data-id="${contact.id}">删除</button> </td> </tr> `; }); contactList.innerHTML = html; } // 渲染分页按钮 function renderPageButtons(currentPage) { const totalPages = getTotalPages(); let html = ''; if (totalPages > 1) { const startPage = Math.max(currentPage - Math.floor(MAX_PAGES / 2), 1); const endPage = Math.min(startPage + MAX_PAGES - 1, totalPages); for (let i = startPage; i <= endPage; i++) { html += `<button class="page-btn ${i === currentPage ? 'active' : ''}" data-page="${i}">${i}</button>`; } } pageButtons.innerHTML = html; } // 显示弹窗 function showModal(contact) { modal.style.display = 'block'; if (contact) { modalContent.dataset.mode = 'edit'; modalContent.dataset.id = contact.id; document.querySelector('#name').value = contact.name; document.querySelector('#phone').value = contact.phone; document.querySelector('#email').value = contact.email; } else { modalContent.dataset.mode = 'add'; modalContent.removeAttribute('data-id'); document.querySelector('#name').value = ''; document.querySelector('#phone').value = ''; document.querySelector('#email').value = ''; } } // 隐藏弹窗 function hideModal() { modal.style.display = 'none'; } // 添加联系人 function addContact(contact) { contact.id = new Date().getTime(); // 生成一个唯一的 ID contacts.push(contact); } // 修改联系人 function editContact(id, contact) { const index = contacts.findIndex(c => c.id === id); if (index !== -1) { contacts.splice(index, 1, contact); } } // 删除联系人 function deleteContact(id) { const index = contacts.findIndex(c => c.id === id); if (index !== -1) { contacts.splice(index, 1); } } // 初始化页面 function init() { // 绑定事件 addBtn.addEventListener('click', () => { showModal(); }); searchInput.addEventListener('input', () => { const keyword = searchInput.value.trim().toLowerCase(); const filteredContacts = contacts.filter(contact => { return contact.name.toLowerCase().includes(keyword) || contact.phone.includes(keyword); }); renderContactList(1); renderPageButtons(1); }); contactList.addEventListener('click', event => { const target = event.target; if (target.classList.contains('edit-btn')) { const id = Number(target.dataset.id); const contact = contacts.find(c => c.id === id); showModal(contact); } else if (target.classList.contains('delete-btn')) { const id = Number(target.dataset.id); deleteContact(id); renderContactList(1); renderPageButtons(1); } }); pageButtons.addEventListener('click', event => { const target = event.target; if (target.classList.contains('page-btn')) { const page = Number(target.dataset.page); renderContactList(page); renderPageButtons(page); } }); closeBtn.addEventListener('click', () => { hideModal(); }); saveBtn.addEventListener('click', event => { event.preventDefault(); const name = document.querySelector('#name').value.trim(); const phone = document.querySelector('#phone').value.trim(); const email = document.querySelector('#email').value.trim(); if (name && phone && email) { const contact = { name, phone, email }; const mode = modalContent.dataset.mode; const id = mode === 'edit' ? Number(modalContent.dataset.id) : null; if (mode === 'add') { addContact(contact); } else if (mode === 'edit' && id) { editContact(id, contact); } renderContactList(1); renderPageButtons(1); hideModal(); } }); cancelBtn.addEventListener('click', () => { hideModal(); }); // 初始化数据 for (let i = 1; i <= 50; i++) { addContact({ name: `联系人${i}`, phone: `13800000000${i}`, email: `test${i}@example.com` }); } renderContactList(1); renderPageButtons(1); } // 页面加载完成后初始化页面 document.addEventListener('DOMContentLoaded', () => { init(); }); ``` 你需要将这些代码添加到你的 HTML 文件中,并确保正确引入了 jQuery 库。然后你需要在页面中添加一个 ID 为 `search-input` 的搜索框,并在表格中的每一行中添加一个“编辑”按钮和一个“删除”按钮。你还需要在页面底部添加一个 ID 为 `page-buttons` 的容器,用于渲染分页按钮。最后,你需要添加一个 ID 为 `modal` 的弹窗,用于添加或编辑联系人。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值