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
您可以尝试将日期字符串的格式更改为以下格式:
$("#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
查看更多信息
我的代码:
<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
您可以尝试将日期字符串的格式更改为以下格式:
$("#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
查看更多信息