使用javascript循环提交特定值

时间:2013-06-10 09:53:50

标签: php javascript jquery

我有类似的东西

<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感谢Jacob Amerz

2 个答案:

答案 0 :(得分:1)

假设你写了

 <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);
        }
    });

答案 1 :(得分:0)

问题是你在页面加载时只读取一次计数器的值。
你需要做的是当按下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);
    }
});