我有循环的表单,我想使用时间选择器。问题是在循环外它工作正常,但在循环内它不起作用。 对于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>
答案 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