为什么JQuery Datepicker发生故障?

时间:2014-12-17 13:45:42

标签: javascript jquery jquery-ui datepicker

我有一个页面,我使用for循环添加文本框。有一个表格,其中有12行,4列。在第2和第4列中,我添加了正好显示的datepicker。

问题是当我从第二列的datepicker中选择日期时,日期在第二列中设置(正确)但是当我在第四列中选择日期时,日期在第二列中设置(不正确)。

这是我的代码:

...

<table class="table table-striped">
    <tr>
        <th><center>Column1</center></th>
        <th><center>Column2</center></th>
        <th><center>Column3</center></th>
        <th><center>Column4</center></th>
    </tr>

    <?php

      for($i=0; $i<count($time_period); $i++) {

        $current_table = $table[$i];

        $result = $db->query("SHOW TABLES LIKE '$current_table'");

        if($result->rowCount() > 0) {
          //Table Exists!

        ?>
        <tr>
          <td><center><?php echo $time_period[$i]; ?></center></td>
          <td><input type="text" class="form-control datepicker" id="<?php echo $i; ?>" autocomplete="off" name="date_receipt[]" value=""></td>
          <td><input type="text" class="form-control" id="<?php echo $i; ?>" autocomplete="off" name="cheque_amount[]" value=""></td>
          <td><input type="text" class="form-control datepicker" id="<?php echo $i; ?>" autocomplete="off" name="date_deposit[]" value=""></td>
        </tr>
        <?php
      }
      }

      ?>

</table>

...

添加Datepicker的JQuery代码

<script>
  $(function(){
    $.datepicker.setDefaults(
      $.extend($.datepicker.regional[''])
    );
    $('.datepicker').datepicker({ dateFormat: 'dd-mm-yy' });
  });
</script>

我不知道为什么会这样。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我遇到过类似的问题。尝试给他们提供唯一的ID,然后使用ID在jQuery中选择它们。

推理:我的猜测是.datepicker返回一个节点数组,因此当它被点击时,它会将值放入class.val中,这将是数组中的第一个子节点。

回复更新:

他们都有相同的ID:

id="<?php echo $i; ?>

不工作:http://jsfiddle.net/snlacks/k3hdzLre/3/ 工作:http://jsfiddle.net/snlacks/k3hdzLre/4/

因为它们都具有相同的ID,所以浏览器将按ID查看类(即使您没有通过ID),因为这样更快。浏览器假定ID是唯一的。