循环中的时间选择器

时间:2013-07-23 02:26:26

标签: php javascript loops timepicker

我有循环的表单,我想使用时间选择器。问题是在循环外它工作正常,但在循环内它不起作用。 对于3输入框,可以看到时间选择器,但是当选择时间时它只会改变第一个框。

<?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>

1 个答案:

答案 0 :(得分: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开放标记<?的使用不当。在此处添加一个小解释以供将来参考:

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

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