隐藏的输入值,表单循环中的非唯一ID

时间:2018-09-13 03:22:21

标签: javascript php jquery html

我正在尝试使用多个(动态)输入准备表单以通过ajax正确插入。

当前,使用我的php循环,我有4个div / forms。每个表单都有一个开始输入,然后单击moreItems_add按钮,它会动态添加另一个输入,每个表单/格最多10个。

这很好。但是我添加了一个变量和console.log来记录我的隐藏输入的值,该值应该为每个表单获取一个ID(<?php echo $ticker['ticker'] ?>),但目前仅记录为“ 1”。因此,当我单击第一个表单中的按钮时,它看起来正确,但是当我单击其他表单时,它仍然为1。我认为这是因为我在隐藏的输入中没有唯一的ID?

如何更改跟踪隐藏输入的方式,以便可以进行ajax调用,该调用仅在具有正确的代码ID的给定表单的输入上进行插入?

<?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">+</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;?>


<script type="text/javascript">

$("button.moreItems_add").on("click", function(e) {
var tickerID = $('#tickerID').val();
  var numItems = $("input[type='text']", $(this).closest("form")).length;
  if (numItems < 10) {
    var html = '<label class="ItemLabel">Item ' + (numItems + 1) + ': </label>';
    html += '<input type="text" name="Items[]"/><br/>';
    $(this).before(html);
    console.log(tickerID);
  }
});

</script>

1 个答案:

答案 0 :(得分:0)

要生成唯一的id属性,您应该将php的ticker值附加到id属性。或者,如果不是代码价值,则至少要使其唯一。但是您真的不需要。

由于所有元素都包装在form标记中并且处于同一级别,因此您可以通过在hidden {{1} {3}}:

input