jquery ui datepicker setdate 仅适用于 google chrome

jquery ui datepicker setdate only works on google chrome

我的代码:

<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 Fiddle: https://jsfiddle.net/g0uyok13/

在Google中Chrome在文本输入区显示2017-01-01。在 Firefox 中,它显示今天的日期 (atm 2016-02-24)。我希望它在 Firefox 中的工作方式与在 Google Chrome.

中的工作方式相同

有什么想法吗?

问题出在时间上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 了解更多信息

您的日期在 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 是二月等...

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

在 Firefox 中试试这个:

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

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

Invalid Date

working fiddle

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

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

Firefox 不知道如何用 space

解析日期

这里摘自 MDN

dateString

String value representing a date. The string should be in a format recognized by the Date.parse() method (IETF-compliant RFC 2822 timestamps and also a version of ISO8601).

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

查看更多信息