【问题标题】:Looping in php and incorporating Datetimepicker在 php 中循环并合并 Datetimepicker
【发布时间】:2018-06-14 15:19:23
【问题描述】:

我正在使用 datetimepicker javascript 进行引导。如果只有一个输入字段或者它是多个输入字段中的第一个,则该实例有效。但是如果有多个字段,其他的就不行了。

小部件是从 php 中的 foreach 循环创建的,因此 foreach 记录它提供了一个新部分,其中包含标题、到期日期和 datetimepicker 字段以创建新日期。但是,如果我点击第二个或第三个日期选择器项目的日历图标,它只会激活第一个的弹出日历。

如何正确地将其合并到循环中,以便每个字段都有自己的 datetimepicker 输入?

<?php foreach($v as $k=>$n): ?>
<!--Body of the Modal for expired displays-->
<br>
<h6><?php echo $n['Type'] ?></h6>
<h6>Date/Time Expiring: <?php echo $n["Expiration"] ?></h6>
<h6>Set New Expiration:</h6>
  <div class="form-group">
    <div class="input-group date" id="datetimepicker1" data-target-input="nearest">
      <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker1"/>
      <span class="input-group-addon" data-target="#datetimepicker1" data-toggle="datetimepicker">
          <span class="fa fa-calendar"></span>
      </span>
    </div>
  </div>                 
<?php endforeach; ?>

<script type="text/javascript">
$(function () {
  $('#datetimepicker1').datetimepicker({
     icons: {
                  time: "fa fa-clock-o",
                  date: "fa fa-calendar",
                  up: "fa fa-arrow-up",
                  down: "fa fa-arrow-down"
              }
  });
});
</script>

更新:

<div class="form-group">
              <div class=" datepicker input-group date"  data-target-input="nearest">
                <input type="text" class="form-control datetimepicker-input" data-target=".datepicker"/>
                <span class="input-group-addon" data-target=".datepicker" data-toggle="datetimepicker">
                    <span class="fa fa-calendar"></span>
                </span>
              </div>
            </div>
<script type="text/javascript">
$('.datepicker').each(function(){
  $(this).datetimepicker();
   icons: {
                time: "fa fa-clock-o",
                date: "fa fa-calendar",
                up: "fa fa-arrow-up",
                down: "fa fa-arrow-down"
            }
  });

</script>

【问题讨论】:

  • 您正在使用相同的id ("datetimepicker1") 创建多个divs。一种可能的解决方案是在循环中保留一个计数器并将其用作ids 的后缀。
  • 不要将 ID 放入循环中,否则它不再是唯一的。您可以删除 datetimepicker1 ID,添加一个像“datepicker”这样的通用类。然后在你的 JS 目标中 $('.datepicker') 而不是 ID。
  • @AlexanderDeSousa 我也这样做了,但现在我没有弹出窗口。如果我点击日历图标,它只会用今天的日期和时间填充所有框

标签: javascript php datetimepicker


【解决方案1】:

您有多个具有相同 ID 的 div。这是不正确的。

<?php foreach($v as $k=>$n): ?>
<!--Body of the Modal for expired displays-->
<br>
<h6><?php echo $n['Type'] ?></h6>
<h6>Date/Time Expiring: <?php echo $n["Expiration"] ?></h6>
<h6>Set New Expiration:</h6>
  <div class="form-group">
    <div class="input-group date datetimepicker1" data-target-input="nearest">
      <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker1"/>
      <span class="input-group-addon" data-target="#datetimepicker1" data-toggle="datetimepicker">
          <span class="fa fa-calendar"></span>
      </span>
    </div>
  </div>                 
<?php endforeach; ?>

<script type="text/javascript">
$(function () {
  $('.datetimepicker1').datetimepicker({
     icons: {
                  time: "fa fa-clock-o",
                  date: "fa fa-calendar",
                  up: "fa fa-arrow-up",
                  down: "fa fa-arrow-down"
              }
  });
});
</script>

【讨论】:

  • 如果我只在 datepicker div 周围加入一个 php foreach 循环并使用迭代器为每个循环添加一个新 ID,会不会更好?
【解决方案2】:

Datepicker 不能针对 jQuery 集合运行,您需要使用 .each 回调进行循环。将“datetimepicker1”的所有 ID 更改为“datepicker”的类。

$(".datepicker").each(function(){
    $(this).datetimepicker();
});

【讨论】:

  • 好的,我改变了这个,你可以看到我更新的代码。不幸的是,如果我点击日历图标,它仍然只是用今天的日期填充每个字段
  • 可能与任何数据目标有关吗? @alexanderdesousa
猜你喜欢
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 2021-07-22
  • 1970-01-01
  • 2018-10-27
  • 2011-10-31
  • 1970-01-01
相关资源
最近更新 更多