我正在使用xmlhttp
的JavaScript将另一个订单项添加到我的表单中。我试图弄清楚如果用户多次按下“添加行项目”按钮,如何删除行项目,以便表单不会尝试从不必要的行项目中发布空值。
我迷失了如何做到这一点,我认为它与remove()有关,但我不确定如何合并它。
这是我的JavaScript代码
<script type="text/javascript">
var counter = 1;
function addInput(div){
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
var newdiv = document.createElement(div);
var splitResponse = xmlhttp.responseText.split( "[BRK]" );
var firstDropdownContent = splitResponse[0];
var secondDropdownContent = splitResponse[1];
newdiv.innerHTML = "<table><tr><td><img style='background:#ffffff; float:left; ' src='../../images/spacer_icon.png'>Item " + (++counter) + "</td><td>Quantity</td><td>Description</td><td>Amount</td><td><img style='background:#ffffff; float:left; ' src='../../images/spacer_icon.png'>Tax Rate</td></tr><tr><td width='190'><select name='item[]'><option value='' selected></option>" + (firstDropdownContent) + "</select></td><td width='90'><input name='quantity[]' type='text' size='5' /></td><td width='440'><input name='description[]' type='text' size='60' /></td><td width='120'><input name='amount[]' type='text' size='6' /></td><td><select name='taxid[]'><option value='' selected></option>" + (secondDropdownContent) + "</select></td></tr></table><br />";
}
document.getElementById(div).appendChild(newdiv);
}
xmlhttp.open("GET", "invoicedropdownquery.php", false);
xmlhttp.send();
}
</script>
这是我的按钮
<input type="button" value="Add Line Item" onClick="addInput('dynamicInput');">
然后我只使用div来放置它。
<div id="dynamicInput"></div>
如果您能提供帮助,请提前致谢。我可能只是在每个订单项旁边放置一个gif来删除它。
编辑:这是javascript内部的html,更容易阅读。
<table><tr>
<td><img style='background:#ffffff; float:left; ' src='../../images/spacer_icon.png'>Item " + (++counter) + "</td>
<td>Quantity</td>
<td>Description</td>
<td>Amount</td>
<td><img style='background:#ffffff; float:left; ' src='../../images/spacer_icon.png'>Tax Rate</td></tr>
<tr><td width='190'><select name='item[]'><option value='' selected></option>" + (firstDropdownContent) + "</select></td>
<td width='90'><input name='quantity[]' type='text' size='5' /></td>
<td width='440'><input name='description[]' type='text' size='60' /></td>
<td width='120'><input name='amount[]' type='text' size='6' /></td>
<td><select name='taxid[]'><option value='' selected></option>" + (secondDropdownContent) + "</select></td></tr></table><br />
答案 0 :(得分:1)
如果我理解你的问题,你想为每一行添加一个删除按钮。
基本上为此需要为添加的表设置一个动态id,并且一个按钮将调用该函数来删除通过参数传递表的id的行。
删除动态div的项目的功能:
function removeItem(itemId){
document.getElementById('dynamicInput').removeChild(document.getElementById(itemId));
}
这是您更新的代码,没有创建行并删除它的ajax请求:
<script>
var counter = 0;
function add(div){
var newdiv = document.createElement('div');
var firstDropdownContent = "first";
var secondDropdownContent = "second";
newdiv.id = "row"+(++counter);
newdiv.innerHTML = "<table ><tr><td><img style='background:#ffffff; float:left;' src='../../images/spacer_icon.png'>Item " + (counter) + "</td><td>Quantity</td><td>Description</td><td>Amount</td><td><img style='background:#ffffff; float:left; ' src='../../images/spacer_icon.png'>Tax Rate</td></tr><tr><td width='190'><select name='item[]'><option value='' selected></option>" + (firstDropdownContent) + "</select></td><td width='90'><input name='quantity[]' type='text' size='5' /></td><td width='440'><input name='description[]' type='text' size='60' /></td><td width='120'><input name='amount[]' type='text' size='6' /></td><td><select name='taxid[]'><option value='' selected></option>" + (secondDropdownContent) + "</select></td><td><a href='javascript: removeItem(\"row"+counter+"\")'>Remove</a></td></tr></table>";
document.getElementById(div).appendChild(newdiv);
}
function removeItem(itemId){
document.getElementById('dynamicInput').removeChild(document.getElementById(itemId));
}
</script>
<button onclick="add('dynamicInput')">Add</button>
<div id="dynamicInput"></div>
只需根据您当前的代码进行调整即可。