我有一个动态表。我可以添加或删除行。没问题但这就是我想要的。当我单击行插入图标时,将弹出一个弹出窗口,并显示两个选项。例如,选项a和b。当我按A时,我想按A来添加行,按B时按B。我该怎么做?
<script type="text/javascript">
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip();
var actions = $("table td:last-child").html();
// Append table with add row form on add new button click
$(".add-new").click(function(){
$(this).attr("disabled", "disabled");
var index = $("table tbody tr:last-child").index();
var row = '<tr>' +
'<td><input type="text" class="form-control" name="name" id="name"></td>' +
'<td><input type="text" class="form-control" name="department" id="department"></td>' +
'<td><input type="text" class="form-control" name="phone" id="phone"></td>' +
'<td>' + actions + '</td>' +
'</tr>';
$("table").append(row);
$("table tbody tr").eq(index + 1).find(".add, .edit").toggle();
$('[data-toggle="tooltip"]').tooltip();
});
// Add row on add button click
$(document).on("click", ".add", function(){
var empty = false;
var input = $(this).parents("tr").find('input[type="text"]');
input.each(function(){
if(!$(this).val()){
$(this).addClass("error");
empty = true;
} else{
$(this).removeClass("error");
}
});
$(this).parents("tr").find(".error").first().focus();
if(!empty){
input.each(function(){
$(this).parent("td").html($(this).val());
});
$(this).parents("tr").find(".add, .edit").toggle();
$(".add-new").removeAttr("disabled");
}
});
答案 0 :(得分:0)
您应该创建两个“模板函数”,并根据需要使用它们。
const btAddA = document.getElementById('addA')
const btAddB = document.getElementById('addB')
btAddA.addEventListener('click', function(e) {
addTableRow(this.getAttribute("data-template"))
})
btAddB.addEventListener('click', function(e) {
addTableRow(this.getAttribute("data-template"))
})
// adding template based on data-template on the button
function addTableRow(templateId) {
// creating the DOM element (node)
const row = document.createElement('tr')
// picking the right template to add and setting the
// innerHTML of the node created
row.innerHTML = templateId === 'a' ? templateA() : templateB()
// appending to the DOM element (table)
document.getElementById('table').appendChild(row)
}
function templateA() {
return `<td>This is row template:</td><td>A</td>`
}
function templateB() {
return `<td>This is row template:</td><td>B</td>`
}
<button id="addA" data-template="a">Add A</button>
<button id="addB" data-template="b">Add B</button>
<table id="table">
</table>