0

我有一个带有循环的表格,我想使用一个时间选择器。问题出在循环外它工作正常,但在循环内它不起作用。For the 3 input box it's possible to see the time picker but when select the time it will change only the first box.

<?php for ($i = 1; $i <= 3; $i++) { ?>
    Time <input type='text' name='timepicker[<?= $i ?>]' class="datepicker_dynamic" id='timepicker[<?= $i ?>]' value=''/>
<?php } ?>

<script type='text/javascript'>
    $(document).ready(function() { 
        $('.datepicker_dynamic').timepicker({
            showLeadingZero: false,
        });
    });
</script>
4

1 回答 1

2

我对您的代码进行了一些重新排列:

<?php for ($i = 1; $i <= $_SESSION["number"]; $i++) { ?>
    Time
    <input type='text' name='timepicker[<?= $i ?>]' id='timepicker_<?= $i ?>' value=''/>
    <script type='text/javascript'>
        $(document).ready(function() { 
            $('#timepicker_<?= $i ?>').timepicker({
                showLeadingZero: false,
            });
        });
    </script>
<?php } ?>

同样,我同意@Brad 的观点,即最好不要不必要地生成这么多 JS,尤其是当所有日期选择器的功能都相同时,您可以执行以下操作并获得相同的结果:

<?php for ($i = 1; $i <= $_SESSION["number"]; $i++) { ?>
    Time
    <input type='text' name='timepicker[<?= $i ?>]' class="datepicker_dynamic" id='timepicker[<?= $i ?>]' value=''/>
<?php } ?>

并使用以下 JS:

<script type='text/javascript'>
    $(document).ready(function() { 
        $('.datepicker_dynamic').timepicker({
            showLeadingZero: false,
        });
    });
</script>

编辑:最后,问题最终是 PHP open tag 使用不当<?。在此处添加一个小解释以供将来参考:

  • <?php ?>: 默认的php打开和关闭标签,默认总是启用
  • <? ?>: php 短开标签。这可能在默认情况下被禁用,因此请检查您的 PHP 设置并在使用前启用它。
  • <?= ?>: 的简写<?php echo ?>。同样,默认情况下可能已禁用,因此请检查您的 PHP 设置并在使用前启用。

要启用短打开标签,请检查您的 PHP.ini 文件中的 short_open_tag

于 2013-07-23T02:41:41.120 回答