1、一個表單(顯式)
2、一個模態(tài)框(隱式):負責添加和編輯數(shù)據(jù)的功能
3、表單有添加,編輯,刪除按鈕
需求及問題:
添加功能和編輯功能是公用一個模態(tài)框,那么如何區(qū)分對待這兩個功能的數(shù)據(jù)提交
PS;我把代碼放codepen上了,方便的話可移步此傳送門:https://codepen.io/mengjielee...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>clone</title>
<style>
* {
margin:0;
padding:0;
}
.wrapper {
background:rgba(0,0,0,.6);
position:fixed;
top:0;
right:0;
bottom:0;
left:0;
}
.modal {
position:absolute;
top:50%;
left:50%;
width:200px;
height:300px;
margin-top:-150px;
margin-left:-100px;
background: silver;
text-align: center;
}
.hide {
display: none;
}
</style>
</head>
<body>
<!--添加按鈕-->
<button id="add">添加</button>
<!--表格-->
<table border="1">
<thead>
<tr>
<th>#</th>
<th>姓名</th>
<th>愛好</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>lmj</td>
<td>swim</td>
<td>
<input type="button" class="edit" value="編輯">
<input type="button" class="del" value="刪除">
</td>
</tr>
<tr>
<td>2</td>
<td>cly</td>
<td>loving</td>
<td>
<input type="button" class="edit" value="編輯">
<input type="button" class="del" value="刪除">
</td>
</tr>
</tbody>
</table>
<!--模態(tài)框-->
<div class="wrapper hide">
<div class="modal">
<p>姓名<input type="text" id="uname"></p>
<p>愛好<input type="text" id="uhabby"></p>
<input type="submit" id="handle" value="確定">
<input type="submit" id="cancle" value="取消">
</div>
</div>
<script src="jquery-3.3.1.min.js"></script>
<script>
// 添加按鈕
$("#add").click(function () {
$(".wrapper").removeClass("hide");
});
// 若點擊確定,則新建表格一條記錄
$("#handle").click(function () {
// 保存用戶輸入的添加對象的值
var unameVal = $("#uname").val();
var uhobbyVal = $("#uhabby").val();
// 克隆操作的兩個按鈕:編輯,刪除
var $clEle = $("tbody tr:first").find("td:last").clone(true);
// 序號自增
// 方法一
var $curEle = $("table tr:last");
var indexVal = $($curEle.find("td")[0]).text();
indexVal = Number(indexVal) + 1;
// 方法二
// var indexVal = $("table tr").length;
//
var newEle = document.createElement("tr");
$(newEle).html("<td><td><td><td>");
// 插入表格最后
$(newEle).insertAfter($curEle);
// 將事先保存的值初始化給新記錄
$($(newEle)).find("td:first").text(indexVal);
$($(newEle)).find("td").eq(1).text(unameVal);
$($(newEle)).find("td").eq(2).text(uhobbyVal);
$($(newEle)).find("td:last").html($clEle.html());
$("#uname").val("");
$("#uhabby").val("");
$(".wrapper").addClass("hide");
});
// 若點擊取消,則清空文本框內(nèi)容
$("#cancle").click(function () {
$("#uname").val("");
$("#uhabby").val("");
$(".wrapper").addClass("hide");
});
// 點擊編輯
$(".edit").click(function () {
// 顯示模版框
$(".wrapper").removeClass("hide");
// 獲得當前記錄tr的對象
// console.log($(this).parents().eq(1));
var $tdEles = $(this).parents().eq(1).find("td");
// 將當前行的值初始化文本框
// console.log($tdEles.eq(1).text());
// console.log($tdEles.eq(2).text());
$("#uname").val($tdEles.eq(1).text());
$("#uhabby").val($tdEles.eq(2).text());
});
// 點擊刪除
$(".del").click(function () {
// 獲得當前記錄tr的對象
// console.log($(this).parents().eq(1));
$(this).parents().eq(1).remove();
});
</script>
</body>
</html>
編輯事件
// 點擊編輯
$("table").on("click", ".edit", function () {
// $(".edit").click(function () {
// 顯示模版框
$(".wrapper").removeClass("hide");
// 獲得當前記錄tr的對象
// console.log($(this).parents().eq(1));
var $tdEles = $(this).parents().eq(1).find("td");
// 將當前行的值初始化文本框
// console.log($tdEles.eq(1).text());
// console.log($tdEles.eq(2).text());
$("#uname").val($tdEles.eq(1).text());
$("#uhabby").val($tdEles.eq(2).text());
// 把當前編輯的這一行 jQuery對象 保存到.data("tr", $())里面
$("#handle").data("key",$tdEles);
// alert($("#handle").data());
});
確定事件
// 若點擊確定,則新建表格一條記錄
$("#handle").click(function () {
// 保存用戶輸入的添加對象的值
var unameVal = $("#uname").val();
var uhobbyVal = $("#uhabby").val();
// 克隆操作的兩個按鈕:編輯,刪除
// var $clEle = $("tbody tr:first").find("td:last").clone(true);
// 需要作判斷
// 如果是新增操作
// $().data("tr") 返回值如果是undefined就表示 不是編輯操作
if ($(this).data("key") === undefined){
// 序號自增
// 方法一
var $curEle = $("table tr:last");
var indexVal = $($curEle.find("td")[0]).text();
indexVal = Number(indexVal) + 1;
// 方法二
// var indexVal = $("table tr").length;
//
var newEle = document.createElement("tr");
$(newEle).html("<td><td><td><td>");
// 插入表格最后
$(newEle).insertAfter($curEle);
// 將事先保存的值初始化給新記錄
$($(newEle)).find("td:first").text(indexVal);
$($(newEle)).find("td").eq(1).text(unameVal);
$($(newEle)).find("td").eq(2).text(uhobbyVal);
// 將操作方法固定寫
$($(newEle)).find("td").eq(3).html(`
<input type="button" class="edit" value="編輯">
<input type="button" class="del" value="刪除">
`);
}else{
// 如果是編輯操作
// 拿到用戶編輯之后的值 ,要將編輯的當前行指定位置的數(shù)據(jù)更新一下
var $tdEles = $(this).data("key");
// 從 .data()中取出之前保存的 那一行
// 更新用戶編輯之后的值
$tdEles.eq(1).text(unameVal);
$tdEles.eq(2).text(uhobbyVal);
// 將key對應的值 清空
$(this).removeData("key");
}
// 操作方法采用克隆的形式
// $("tbody tr:first").find("td:last").clone(true).insertAfter($($(newEle)).find("td").eq(2));
// 清空文本框
$("#uname").val("");
$("#uhabby").val("");
$(".wrapper").addClass("hide");
});
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務機構(gòu),發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。