jquery ui datepicker setdate仅适用于谷歌浏览器

时间:2016-02-24 22:37:25

标签: javascript jquery jquery-ui datepicker jquery-ui-datepicker

我的代码:

<input type="text" id="testdate" name="testdate" value="2017-01-01" />

<script>
$('#testdate').datepicker();
$('#testdate').datepicker('option', 'dateFormat', 'yy-mm-dd');
$("#testdate").datepicker('setDate', new Date('2017-01-01 12:00:00'));
</script>

JS小提琴:https://jsfiddle.net/g0uyok13/

在Google Chrome中,它会在文本输入区显示2017-01-01。在Firefox中它显示了今天的日期(atm 2016-02-24)。我希望它能像在谷歌浏览器中一样在Firefox中运行。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

问题出在时间12:00:00。别忘了它是你正在使用的日期选择器。时间与它无关。

现在它在chrome中工作的原因,我猜它是浏览器的内部实现。 Mozilla丢弃无效的日期格式,而chrome尝试并将其剪下来......(这纯粹是我的假设,我不以任何文档为基础......)

<强>更新

是的,我的假设是正确的。 Firefox不支持您输入的日期格式,而Chrome更灵活并且支持它。对于通用日期和时间,您可以使用以下代码:

$('#testdate').datepicker();
$('#testdate').datepicker('option', 'dateFormat', 'yy-mm-dd');
$("#testdate").datepicker('setDate', new Date('2017-01-01T12:00:00Z'));

(适用于两种浏览器)

您还可以查看new Date() works differently in Chrome and Firefox了解有关此内容的更多信息

答案 1 :(得分:1)

您可以尝试将日期字符串的格式更改为格式:

$("#testdate").datepicker('setDate', new Date('2017-01-01T12:00:00'));

Firefox不知道如何用空格解析日期

以下是MDN的摘录

  

dateString

     

表示日期的字符串值。字符串应该在一个    Date.parse()方法识别的格式(符合IETF的RFC 2822    时间戳以及ISO8601的版本。

您可以在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

查看更多信息

答案 2 :(得分:0)

你的日期在firefox中无效...试试这个:

$('#testdate').datepicker();
$('#testdate').datepicker('option', 'dateFormat', 'yy-mm-dd');
$("#testdate").datepicker('setDate', new Date(2017, 00, 01, 12, 0, 0, 0));

注意:月份为0,所以0表示1月1日是2月等...

这应该适用于firefox和chrome。我从这个stackoverflow帖子中获取了日期格式:link

在firefox中试试这个:

console.log(new Date('2017-01-01 12:00:00'));

检查它应该显示的控制台:

  

无效日期

working fiddle