【发布时间】:2018-09-13 14:52:22
【问题描述】:
我被困在这里了。
我在下面有一个“工作”函数(对于每个 PHP 数组行,我正在创建一个带有表单的 div。该表单有一个空输入、一个“+”按钮和一个提交按钮)。
使用第一个表单/div,如果我单击“+”按钮,它每次最多添加一个输入字段,最多 10 个,这正是我想要的。
但是,当我在第 2、第 3 或第 4 个表单上执行此操作时,它会添加输入,但所有输入都会添加到第一个表单。因此,如果我单击表单 2 上的“+”按钮,它会向表单 1 添加一个输入。我知道这与具有非唯一按钮 ID 并通过我的表单输入携带它有关,但我完全坚持什么在这里做。
我需要每个表单/div 都有自己的独立字段、“+”按钮和提交按钮。原因是,我将向提交按钮添加一个 AJAX 调用,该按钮将为该给定表单提交任何添加的输入值(使用此处给出的股票代码 ID `
`<?php echo $ticker['ticker'] ?>``) .
如何修复此功能,使其在任何时候都适用于尽可能多的 div/表单?
<div class="row">
<?php foreach($tickerDisplays as $key => $ticker):?>
<form id="Items" method="post">
<label id="ItemLabel">Item 1:</label>
<input type="text" name="Items[]"><br/>
<button type="button" class="moreItems_add" onclick="moreItems(this);">+</button>
<input type="hidden" name="tickerID" id="tickerID" value="<?php echo $ticker['ticker'] ?>">
<input type="submit" name="saveTickerItems" value="Save Ticker Items">
</form>
<?php endforeach;?>
</div>
<script type="text/javascript">
var maxItems = 1;
function moreItems(button) {
if (maxItems < 10) {
var label = document.createElement("label");
label.id="ItemLabel"+maxItems;
label.innerHTML = "Item "+(maxItems+1)+": ";
var input = document.createElement("input");
input.type='text';
input.name = 'item'+maxItems;
$($(button).sibling('br')[0]).insertBefore($(button));
$($(button).sibling('label')[0]).insertBefore($(button));
$($(button).sibling('input:text')[0]).insertBefore($(button));
maxItems++;
}
}
</script>
【问题讨论】:
-
看起来您正在构建非唯一元素 ID
标签: javascript php jquery html