使用javascript循环提交特定的值


submit specific value with javascript loop

我有这样的东西

<td class="standaard_klein" align="right">
  <div class="timereg<?php echo $TEL;?>" id="timereg<?php echo $TEL;?>">
    <i contenteditable><?php print(number_format($line2['WERKUREN'], 2, ',','')); ?>
    </i>
  </div>
</td>
<input type="hidden" name="hist_id" id="hist_id<?php echo $TEL;?>" value="<?php echo $line['ID'];?>">
<input type="hidden" name="counter" id="counter" value="<?php echo $TEL;?>">

和JS函数

<script type="text/javascript" language="javascript">
      var counter = document.getElementById('counter').value;
      $('#timereg'+counter).keypress(function(event){
            if(event.keyCode == 13){
            var x = document.getElementById('timereg'+counter).textContent;
            var y = document.getElementById('hist_id'+counter).value;
            $('#timereg'+counter).load('change_timereg.php?newtime=' + x + '&user=<?php echo $_SESSION['loginid'];?>&hist_id='+ y);
            }
       });
</script>

,但它只得到第一个"计数器"元素。我如何修改功能,以获得特定的"计数器"?$TEL是我想要得到的计数器值。(通常是$i,但这里用了$TEL)。

解决方案:jsfiddle.net/qmtGK THANK TO Jacob Amerz

假设您写

 <input type="hidden" name="counter" id="counter" value="<?php echo $TEL;?>">

不仅一次,而且在循环中,您对许多元素使用相同的id,这是行不通的。

我可以建议一个不同的方法吗?给每个div相关的计数器并附加一个共享类

<div class="timereg<?php echo $TEL;?> shared_class" related-counter="counter<?php echo $tel;?>" id="timereg<?php echo $TEL;?>">
    <i contenteditable><?php print(number_format($line2['WERKUREN'], 2, ',','')); ?>
    </i>
</div>

<input type="hidden" name="counter" id="counter<?php echo $tel;?>" value="<?php echo $TEL;?>">

和js:

    $('.shared_class').keypress(function(event){
        if(event.keyCode == 13){
           // ... whatever you want to do
           related_counter = $(this).attr("related-counter");               
           $("#"+related_counter).load('change_timereg.php?newtime=' + x + '&user=<?php echo $_SESSION['loginid'];?>&hist_id='+ y);
        }
    });

问题是您在页面加载时只读取一次counter的值。
您需要做的是,当按下enter key时,您需要找到对应的计数器值。

$('#timereg'+counter).keypress(function(event){
    if(event.keyCode == 13){
        var counter = $(this).closest('td').find(':input[name="counter"]').val();
        var x = document.getElementById('timereg'+counter).textContent;
        var y = document.getElementById('hist_id'+counter).value;
        $('#timereg'+counter).load('change_timereg.php?newtime=' + x + '&user=<?php echo $_SESSION['loginid'];?>&hist_id='+ y);
    }
});