如何将php数据设置为javascript日期并更改输入文本的颜色

Posted

技术标签:

【中文标题】如何将php数据设置为javascript日期并更改输入文本的颜色【英文标题】:How to set php data to javascript date and change color of the input text 【发布时间】:2017-02-21 14:04:49 【问题描述】:

每当$visa_expired 与今天的日期相同时,我都会尝试更改input text 的颜色。但现在,我收到一条错误消息 Invalid Date

这是我的代码:

  <script type="text/javascript">


function checkFilled() 

  var today = new Date();
  var expired = new Date("<?php echo $visa_expiry; ?> ");
  var inputVal = document.getElementById("expiry");

    if (inputVal.value == "") 
        inputVal.style.backgroundColor = "red";
        window.alert(today);
    
    else
        inputVal.style.backgroundColor = "yellow";
    


checkFilled();

  </script>

这是我的 html

<input type="text" class="form-control" size="5" value="$visa_expiry" id="expiry">

【问题讨论】:

$visa_expiry 到底是什么?另外,为什么不从输入字段中获取日期值? 你得到的过期日期应该是什么格式dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]]) 如何设置格式?抱歉,我是 javascript 新手 【参考方案1】:

这与我过去所做的类似

var inputElement = document.getElementById("expiry");
var inputDate = inputElement.value;
var expired = new Date();
var today = new Date();

expired.setUTCFullYear(inputDate.split("/")[2], inputDate.split("/")[0] - 1, inputDate.split("/")[1]);


if(today === expired) 
    inputElement.style.backgroundColor = "red";
    window.alert(today);
 else 
    inputElement.style.backgroundColor = "yellow";

看起来你需要改变

<input type="text" class="form-control" size="5" value="$visa_expiry" id="expiry">

<input type="text" class="form-control" size="5" value="<?php echo $visa_expiry; ?>" id="expiry">

请注意,由于您使用的是输入表单框,因此总是可能有人会输入类似 10-12-2016 的内容,而不是您可能期望的 10/12/2016 格式。这将导致上述代码失败。您可能要考虑找到一个日期选择器,或者至少更改 &lt;input type="text"&gt;&lt;input type="date"&gt;

然后创建一些代码以将日期格式化为您想要的格式。

参考文献

How to change css property using javascript Converting string to date in js

【讨论】:

【参考方案2】:

如果 10/13/2016 是 $visa_expiry 的值,它不应该给出错误。 检查此链接并运行它警报日期的小提琴。 http://phpfiddle.org/main/code/hpia-ub40

<script type="text/javascript">


function checkFilled() 

  var today = new Date();
  var expired = new Date("<?php echo $visa_expiry; ?> ");
  var inputVal = document.getElementById("expiry");

    if (today >= expired) 
        inputVal.style.backgroundColor = "red";
    
    else
        inputVal.style.backgroundColor = "yellow";
    


checkFilled();

  </script>

【讨论】:

我现在如何使用我的$visa_expiry 顺便说一句,你的 html 应该是 【参考方案3】:

您正试图在警报中显示一个日期对象,该对象需要一个字符串输入。你应该改用getDate()

试试这个:

var today = new Date();
var day = today.getDate();
var month = today.getMonth() + 1;
var year = today.getFullYear();

today = day + '/' + month + '/' + year

【讨论】:

投反对票没有评论,这是***的工作原理吗? 输出数字“13” 请问,您的输入 ($visa_expiry) 究竟是什么? 2016 年 10 月 13 日。那是$visa_expiry的值 这并不能解决问题。 alert(today) 工作没有问题。 getDate() 返回月份中的哪一天。

以上是关于如何将php数据设置为javascript日期并更改输入文本的颜色的主要内容,如果未能解决你的问题,请参考以下文章

GMT 与 UTC 日期

如何在PHP中将默认日期设置为波斯日期?

如何在 PHP 中将默认日期设置为波斯日期?

将Javascript日期字符串转换为PHP日期[重复]

如何比较日期和时间并获取差异,然后在 Javascript 中将其设置为秒

如何在javascript中将日期时间从用户时区转换为EST [重复]