【问题标题】:jQuery Datepicker value and storing into a php variablejQuery Datepicker 值并存储到 php 变量中
【发布时间】:2015-05-03 17:05:09
【问题描述】:

我正在尝试将 jQuery datepicker 值存储到 php 日期格式的变量中。

期望的结果:示例

输入字段名称“reviewdate” = 03/02/2015

输入字段名称“reviewmonth” = 3

这两个值都将提交到 mysql 数据库。我可以存储“reviewdate”,但在将信息提交到数据库后,“reviewmonth”仍然是“null”。

<body>

   <!-- Datepicker -->
   <h2 class="demoHeaders">Datepicker</h2>

   <input name="reviewdate" type="text" id="datepicker"></input>

   <input name="reviewmonth" type="hidden"  value="<?php if(isset($_GET["reviewdate"])) { echo date_format($_GET["reviewdate"], "n");} else {echo "";} ?>"></input>

   <script src="external/jquery/jquery.js"></script>
   <script src="jquery-ui.js"></script>
   <script>
      $( "#datepicker" ).datepicker({
         inline: true
      });
  </script>
</body?

Thank you so much for all your help!

【问题讨论】:

  • 只需使用 datepicker 插件的 onselect 事件即可获取选中的日期并将值设置为隐藏值。
  • 您的输入字段名reviewmonth 具有intdatetime 的数据类型

标签: javascript php jquery html mysql


【解决方案1】:

为了让date_format工作,你需要先初始化一个DateTime对象:

<?php 
$month = '';
if(isset($_GET["reviewdate"])) { 
    $date = new DateTime($_GET["reviewdate"]); // or $date = date_create($_GET["reviewdate"]); will work the same
    $month = date_format($date, "n");
}
?>
<input name="reviewmonth" type="hidden" value="<?php echo $month; ?>"></input>

如果您想在 JS 中执行此操作,则需要为 datepicker 添加一个处理程序来处理 reviewmonth 并将其附加到隐藏的输入中:

<?php

if(isset($_POST['submit'])) {
    echo '<pre>', print_r($_POST), '</pre>';
}

?>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.3/themes/smoothness/jquery-ui.css" />
<form method="POST">
    <input name="reviewdate" type="text" id="datepicker" />
    <input name="reviewmonth" type="hidden" value="" />
    <input type="submit" name="submit" />
</form>

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.11.3/jquery-ui.js"></script>
<script type="text/javascript">
$('#datepicker').datepicker({
    inline: true,
    onSelect: function(dateText, inst){
        var date = $(this).val();
        var d = new Date(date);
        var n = (d.getMonth() + 1);
        $('input[name="reviewmonth"]').attr('value', n);
    }
});
</script>

Sample Output

【讨论】:

  • 感谢您的帮助。我只是将代码添加到表单并将信息提交到数据库。 “reviewdate”被正确捕获,但“reviewmonth”仍然存在(null)。由于某种原因,我无法存储 reviewdate。用于测试:我替换了 $month = ' '; $month = 'test';并将值“test”提交到数据库。我想知道是不是 id="datepicker"。
  • 感谢您的帮助。必须有办法。
  • @RobSands 您还必须处理表单处理的reviewmonth,它只会在提交后填充,您可以使用reviewdate 在插入数据库之前提取表单处理的月份
  • @RobSands 如果您想更改日期选择器点击事件,您需要创建自己的处理程序
  • 这是一个很好的观点。我会试试的。谢谢您的帮助。我会告诉你的。
【解决方案2】:

你必须替换它

 <script>
  $( "#datepicker" ).datepicker({
     inline: true
  });
  </script>

 <script>
  $( "#datepicker" ).datepicker({
     inline: true,
    dateFormat: 'Y-m-d'
  });
 </script>

【讨论】:

  • 感谢您的回答。我正在尝试使用 id="datepicker" 存储两个具有不同格式的变量。其中一个输入字段是隐藏的,而另一个则不是。谢谢。
  • 你可以定义两次,如
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多