xmlhttp で JavaScript を使用して、フォームに別の項目を追加しています。ユーザーが「ラインアイテムの追加」ボタンを何度も押して、フォームが不要なラインアイテムから空の値を投稿しようとしないように、ラインアイテムを削除する方法を見つけようとしています。
これは、明細項目を追加する私の 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 id='" + (++counter) +"'>
<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><button onclick='removeItem('row" + counter + "')'>Remove</button></td></tr></table><br />";
document.getElementById(div).appendChild(newdiv);
}
}
xmlhttp.open("GET", "invoicedropdownquery.php", false);
xmlhttp.send();
}
</script>
アイテムを削除する JavaScript は次のとおりです。
<script type="text/javascript">
function removeItem(itemId){
document.getElementById('dynamicInput').removeChild(document.getElementById(itemId));
}
</script>
ここに私の追加ボタンがあります
<input type="button" value="Add Line Item" onClick="addInput('dynamicInput');">
ここに行が追加されます。
<div id="dynamicInput"></div>
[削除] ボタンをクリックすると、アイテムが削除されないだけでなく、フォーム全体が投稿されます。ボタンの代わりに、誰かがボタンの代わりにクリック可能なリンクを作成する方法を教えてくれると思います。