var m=0;
var tablemap=new Map();
var booleantable=[];
var keepingvalueofsubtable=[];
$(document).ready(function()
{ var array_items=[];
var obj=$("input:checkbox:not(:checked)");
console.log(obj[0]["id"]);
for (var i = 0, l = obj.length; i < l; i++) {
$("#"+obj[i]['id']+"form").hide();
tablemap[i]=obj[i]['id'];
booleantable[i]=0;
keepingvalueofsubtable[i] = [];
}
;
$(".checkbox").change(function() {
if(this.checked) {
//Do stuff
}
});
$('.frameopener').on('change', function(){
{
var formid=$(this).attr("id");
$("#" + formid + "form").toggle();
}
});
$('.c').click(function () {
var m=$(this).attr('data-value');
booleantable[m]=booleantable[m]+1;
var html='<div class="div-table-row">';
html+='<div class="div-table-col" id="zerofirst" contenteditable="true"></div>';
html+='<div class="div-table-col" id="ZeroSecond" contenteditable="true"></div>';
html+='<div class="div-table-col" id="one" contenteditable="true">0</div>';
html+='<div class="div-table-col" id="two" contenteditable="true">0</div>';
html+=' <div class="div-table-col" id="three" >0</div>';
html+=' <div class="div-table-col"><center><div class="del" aria-hidden="true" data-value="0" ><i class="fas fa-trash delete" ></i></div></center></div>';
html+='</center></div>';
$("#"+tablemap[m]+"form").append(html);
alert(html);
html="";
});
$(document).on('click','.del',function(){
alert();
//alert($(this).attr('data-value').value());
alert($(this).attr("id"));
//const slug = str.substring(str.indexOf('-') + 1);
//alert(slug);
} );
}); {
margin:0;
padding:0;
background-color:#f1f1f1;
}
.box
{
width:1270px;
padding:20px;
background-color:#fff;
border:1px solid #ccc;
border-radius:5px;
margin-top:25px;
box-sizing:border-box;
}
.div-table {
display: table;
width: auto;
background-color: #eee;
border: 1px solid #666666;
border-spacing: 5px; /* cellspacing:poor IE support for this */
}
.div-table-row {
display: table-row;
width: auto;
clear: both;
}
.div-table-col {
float: left; /* fix for buggy browsers */
display: table-column;
width: 200px;
background-color: #ccc;
}
.bttn{
width:100px;
height:10px;
}<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://kit.fontawesome.com/e22ff3c413.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<div class="table-responsive"><table class="table"><tbody>
<tr><center> <legend>Choose your Block Items</legend><center><tr></tr><tr>
<td>
<input type="checkbox" class="frameopener" id="mobilisation" ></td><td>Mobilisation
</td>
<td>
<input type="checkbox" class="frameopener" id="demolition" ></td><td>Demolition
</td>
<td>
<input type="checkbox" class="frameopener" id="substructure" ></td><td>Sub Structure
</td>
<td>
<input type="checkbox" class="frameopener" id="superstructure" ></td><td>Super Structure
</td></tr>
</tbody></table></div>
<form id="mobilisationform">
<div class="div-table" id="mobilisation">
<div class="div-table-row">
<div class="div-table-col" align="center">Mobilisation</div>
<div class="div-table-col">Unit</div>
<div class="div-table-col">Quantity</div>
<div class="div-table-col">Rate</div>
<div class="div-table-col">Amount</div>
<div class="div-table-col"><center><div aria-hidden="true" class="c" id="addmobilisation" data-value="0" ><center><i class="fas fa-plus"></i></center></div><center></div>
</div>
<div class="div-table-row">
<div class="div-table-col" id="zerofirst" contenteditable="true"></div>
<div class="div-table-col" id="ZeroSecond" contenteditable="true"></div>
<div class="div-table-col" id="one" contenteditable="true">0</div>
<div class="div-table-col" id="two" contenteditable="true">0</div>
<div class="div-table-col" id="three" >0</div>
<div class="div-table-col"><center><div aria-hidden="true" class="del" id="delete-0" data-value="0" ><i class="fas fa-trash delete" ></i></div></center></div>
</div>
</div>
</form>
<form id="demolitionform">
<div class="div-table" id="demolition">
<div class="div-table-row">
<div class="div-table-col" align="center">Demolition</div>
<div class="div-table-col">Unit</div>
<div class="div-table-col">Quantity</div>
<div class="div-table-col">Rate</div>
<div class="div-table-col">Amount</div>
<div class="div-table-col"><center><div aria-hidden="true" class="c" id="adddemolition" data-value="1" ><center><i class="fas fa-plus"></i></center></div><center></div>
</div>
<div class="div-table-row">
<div class="div-table-col" id="zerofirst" contenteditable="true"></div>
<div class="div-table-col" id="ZeroSecond" contenteditable="true"></div>
<div class="div-table-col" id="one" contenteditable="true">0</div>
<div class="div-table-col" id="two" contenteditable="true">0</div>
<div class="div-table-col" id="three" >0</div>
<div class="div-table-col"><center><div aria-hidden="true" class="del" id="delete-1" data-value="0" ><i class="fas fa-trash delete" ></i></div></center></div>
</div>
</div>
</form>
<form id="substructureform">
<div class="div-table" id="substructure">
<div class="div-table-row">
<div class="div-table-col" align="center">Sub Structure</div>
<div class="div-table-col">Unit</div>
<div class="div-table-col">Quantity</div>
<div class="div-table-col">Rate</div>
<div class="div-table-col">Amount</div>
<div class="div-table-col"><center><div aria-hidden="true" class="c" id="addsubstructure" data-value="2" ><center><i class="fas fa-plus"></i></center></div><center></div>
</div>
<div class="div-table-row">
<div class="div-table-col" id="zerofirst" contenteditable="true"></div>
<div class="div-table-col" id="ZeroSecond" contenteditable="true"></div>
<div class="div-table-col" id="one" contenteditable="true">0</div>
<div class="div-table-col" id="two" contenteditable="true">0</div>
<div class="div-table-col" id="three" >0</div>
<div class="div-table-col"><center><div aria-hidden="true" class="del" id="delete-2" data-value="0" ><i class="fas fa-trash delete" ></i></div></center></div>
</div>
</div>
</form>
<form id="superstructureform">
<div class="div-table" id="superstructure">
<div class="div-table-row">
<div class="div-table-col" align="center">Super Structure</div>
<div class="div-table-col">Unit</div>
<div class="div-table-col">Quantity</div>
<div class="div-table-col">Rate</div>
<div class="div-table-col">Amount</div>
<div class="div-table-col"><center><div aria-hidden="true" class="c" id="addsuperstructure" data-value="3" ><center><i class="fas fa-plus"></i></center></div><center></div>
为检查项列表创建一个子表.
我有一个复选框的列表。当您单击复选框时,将显示使用div生成的表。这方面的问题是,我为该表的这些行指定ids为<tablename>+<tableid>+<subtableid>.的表中有一个列,用于删除子表的行。当我从表中间单击delete时,行将被删除。跟踪未删除行的最简单方法是什么?我需要将所有行作为post传递到下一个php页面。我还需要计算的数量乘以数量和比率,并找到总量。做这件事最简单的方法是什么?
以下是我所要尝试的:
php:
foreach( $checkboxitemsafterstripper as $key => $item ){
echo '
<form id="'.$item.'form">
<div class="div-table" id="'.$item.'">
....'
<div class="div-table-col"><center><div aria-hidden="true" class="c" id="add'.$item.'" data-value="'.$key.'" ><center><i class="fas fa-plus"></i></center></div><center></div>
<div aria-hidden="true" class="del" id="delete-'.$key.'" data-value="0" ><i class="fas fa-trash delete" ></i></div></center>jquery:
var obj=$("input:checkbox:not(:checked)");
console.log(obj[0]["id"]);
for (var i = 0, l = obj.length; i < l; i++) {
$("#"+obj[i]['id']+"form").hide();
tablemap[i]=obj[i]['id'];
booleantable[i]=0;
keepingvalueofsubtable[i] = [];
}
$('.c').click(function () {
var m=$(this).attr('data-value');
booleantable[m]=booleantable[m]+1;
var html='<div class="div-table-row">';
html+='<div class="div-table-col" id="zerofirst" contenteditable="true"></div>';
html+='<div class="div-table-col" id="ZeroSecond" contenteditable="true"></div>';
html+='<div class="div-table-col" id="one" contenteditable="true">0</div>';
html+='<div class="div-table-col" id="two" contenteditable="true">0</div>';
html+=' <div class="div-table-col" id="three" >0</div>';
// html+='<div class="div-table-col"><div class="del" aria-hidden="true" id="delete-'+m+'-'+booleantable[m]+'" data-value="'+booleantable[m]+'" ><center><i class="fas fa-trash"></i></center></div></div>';
html+=' <div class="div-table-col"><center><div class="del" aria-hidden="true" data-value="0" ><i id="'+tablemap[m]+'-'+m+'-'+booleantable[m]+'"class="fas fa-trash delete" ></i></div></center></div>';
html+='</center></div>';
$("#"+tablemap[m]+"form").append(html);
alert(html);
html="";
});如何执行删除部分:
$(document).on('click','.del',function(event){
console.log(event.target.id);
} );
});
';
}jquery部件:

我的代码在chrome中运行得很好,但在Firefox中却不行。为什么是那样的?
以下是完整的代码:
我在这里放了一只小提琴:
发布于 2020-12-14 06:29:33
在动态创建divs时,您需要将其绑定到静态元素,即:任何div、主体、文档等。然后,每当one或two div上的用户input使用$(this).text()和其他值使用.closest()和find()获得所需的值时,将所需的值添加到.three中。
接下来,每当单击delete按钮时,只需使用$(this).closest(".div-table-row").remove()删除整个div。
最后,为了将这些值发送到后端,可以通过迭代表单和获取所需的值并将它们推送到主数组来创建JSON。
演示代码:
var m = 0;
var tablemap = new Map();
var booleantable = [];
var keepingvalueofsubtable = [];
//when one is input
$(document).on('input', '.one', function() {
//get text using this and other input using closest
var value = parseFloat($(this).text()) * parseFloat($(this).closest(".div-table-row").find(".two").text());
if (isNaN(value))
value = 0;
$(this).closest(".div-table-row").find(".three").text(value);
});
$(document).on('input', '.two', function() {
var valuetwo = parseFloat($(this).text()) * parseFloat($(this).closest(".div-table-row").find(".one").text());
if (isNaN(valuetwo))
valuetwo = 0;
$(this).closest(".div-table-row").find(".three").text(valuetwo);
});
var array_items = [];
var obj = $("input:checkbox:not(:checked)");
for (var i = 0, l = obj.length; i < l; i++) {
$("#" + obj[i]['id'] + "form").hide();
tablemap[i] = obj[i]['id'];
booleantable[i] = 0;
keepingvalueofsubtable[i] = [];
}
$('.frameopener').on('change', function() {
{
var formid = $(this).attr("id");
$("#" + formid + "form").toggle();
}
});
$('.c').click(function() {
var m = $(this).attr('data-value');
booleantable[m] = booleantable[m] + 1;
//added class
var html = '<div class="div-table-row">';
html += '<div class="div-table-col zerofirst " contenteditable="true"></div>';
html += '<div class="div-table-col ZeroSecond" contenteditable="true"></div>';
html += '<div class="div-table-col one" contenteditable="true">0</div>';
html += '<div class="div-table-col two" contenteditable="true">0</div>';
html += ' <div class="div-table-col three" >0</div>';
html += ' <div class="div-table-col"><center><div class="del" aria-hidden="true" data-value="0" ><i class="fas fa-trash delete" >delete</i></div></center></div>';
html += '</center></div>';
$("#" + tablemap[m] + "form").append(html);
alert(html);
html = "";
});
$(document).on('click', '.del', function() {
$(this).closest(".div-table-row").remove() //remove rows
});
$("button.submit").click(function() {
var main_array = new Array()
//form which is visible
$("form:visible").each(function() {
//get id
var table_of = $(this).attr('id');
var main_inside = {} //create obj
main_inside[table_of] = new Array();
//loop through rows not first
$(this).find(".div-table-row:not(:first)").each(function() {
var inputs = {}; //creat obj
//get values
inputs["zeroone"] = $(this).find(".div-table-col:eq(0)").text();
inputs["zerotwo"] = $(this).find(".div-table-col:eq(1)").text();
inputs["one"] = $(this).find(".div-table-col:eq(2)").text();
inputs["two"] = $(this).find(".div-table-col:eq(3)").text();
inputs["three"] = $(this).find(".div-table-col:eq(4)").text();
main_inside[table_of].push(inputs); //push in main_inside
})
main_array.push(main_inside) //finally push in main array
})
console.log(main_array)
//your json ..stringfy & ajax request
})body {
margin: 0;
padding: 0;
background-color: #f1f1f1;
}
.box {
width: 1270px;
padding: 20px;
background-color: #fff;
border: 1px solid #ccc;
border-radius: 5px;
margin-top: 25px;
box-sizing: border-box;
}
.div-table {
display: table;
width: auto;
background-color: #eee;
border: 1px solid #666666;
border-spacing: 5px;
/* cellspacing:poor IE support for this */
}
.div-table-row {
display: table-row;
width: auto;
clear: both;
}
.div-table-col {
float: left;
/* fix for buggy browsers */
display: table-column;
width: 200px;
background-color: #ccc;
}
.bttn {
width: 100px;
height: 10px;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="table-responsive">
<table class="table">
<tbody>
<center>
<legend>Choose your Block Items</legend>
</center>
<tr>
<td>
<input type="checkbox" class="frameopener" id="mobilisation"></td>
<td>Mobilisation
</td>
<td>
<input type="checkbox" class="frameopener" id="demolition"></td>
<td>Demolition
</td>
</tr>
</tbody>
</table>
</div>
<form id="mobilisationform">
<div class="div-table" id="mobilisation">
<div class="div-table-row">
<div class="div-table-col" align="center">Mobilisation</div>
<div class="div-table-col">Unit</div>
<div class="div-table-col">Quantity</div>
<div class="div-table-col">Rate</div>
<div class="div-table-col">Amount</div>
<div class="div-table-col">
<center>
<div aria-hidden="true" class="c" id="addmobilisation" data-value="0">
<center><i class="fas fa-plus">add</i></center>
</div>
</center>
</div>
</div>
<div class="div-table-row">
<!--added class-->
<div class="div-table-col zerofirst" contenteditable="true"></div>
<div class="div-table-col ZeroSecond" contenteditable="true"></div>
<div class="div-table-col one" contenteditable="true">0</div>
<div class="div-table-col two" contenteditable="true">0</div>
<div class="div-table-col three" class="three">0</div>
<div class="div-table-col">
<center>
<div aria-hidden="true" class="del" id="delete-0" data-value="0"><i class="fas fa-trash delete">delete</i></div>
</center>
</div>
</div>
</div>
</form>
<form id="demolitionform">
<div class="div-table" id="demolition">
<div class="div-table-row">
<div class="div-table-col" align="center">Demolition</div>
<div class="div-table-col">Unit</div>
<div class="div-table-col">Quantity</div>
<div class="div-table-col">Rate</div>
<div class="div-table-col">Amount</div>
<div class="div-table-col">
<center>
<div aria-hidden="true" class="c" id="adddemolition" data-value="1">
<center><i class="fas fa-plus">add</i></center>
</div>
</center>
</div>
</div>
<div class="div-table-row">
<div class="div-table-col zerofirst" contenteditable="true"></div>
<div class="div-table-col ZeroSecond" contenteditable="true"></div>
<div class="div-table-col one" contenteditable="true">0</div>
<div class="div-table-col two" contenteditable="true">0</div>
<div class="div-table-col three">0</div>
<div class="div-table-col">
<center>
<div aria-hidden="true" class="del" id="delete-1" data-value="0"><i class="fas fa-trash delete">delete</i></div>
</center>
</div>
</div>
</div>
</form>
<button class="submit" type="submit">Submit All</button>
<out></out>
https://stackoverflow.com/questions/65282207
复制相似问题