我在OSX 10.9.4(小牛队)Safari和Firefox上也遇到了以下问题:
我使用引导程序日期选择器输入日期
<label class="col-sm-3 gray required" for="received_date"><?php echo $dataHelper->__('Received Date') ?> <em>*</em></label>
<div class="col-sm-9 controls input-group date" data-date-format="<?php echo Aion_Ftc_Helper_Data::BOOTSTRAP_DATE_FORMAT ?>" id="dp_received_date">
<input type="text" class="required-entry custom-date validate-date" id="received_date" name="received_date">
<span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span>
</div>
这是一个有原型和原型验证的magento网站。有效的日期格式是"mm-dd-yyyy",在windowschrome、firefox上验证成功,但在osx-safari和firefox(osx-chrome也很好)上出错
validate.js
['validate-date', 'Please enter a valid date (MM-DD-YYYY format).', function(v) {
if(Validation.get('IsEmpty').test(v)) return true;
var regex = /^(d{2})-(d{2})-(d{4})$/;
if(Prototype.Browser.WebKit){
var d = new Date(v.replace(regex, '$1-$2-$3'));
} else {
var d = new Date(v.replace(regex, '$3-$1-$2'));
}
//console.log(d);
return (parseInt(RegExp.$2, 10) == d.getDate()) &&
(parseInt(RegExp.$1, 10) == (1+d.getMonth()) ) &&
(parseInt(RegExp.$3, 10) == d.getFullYear());
}],
怎么了?有什么建议吗?我也使用jquery noconflict
谢谢!
只需简单地使用这个:
['validate-date', 'Please enter a valid date (MM-DD-YYYY format).', function(v) {
return Validation.get('IsEmpty').test(v) || /^(d{1,2})-(d{1,2})-(d{4})$/.test(v);
}],
我今天遇到了同样的问题,不要使用破折号作为分隔符。这在Chrome中运行良好,但在Safari/iOS中则不然,用斜杠替换破折号可以解决这个问题。否则,日期功能将在Safari中中断。
带有的日期字符串不正确-
以下代码将返回以下
new Date('03-25-2017');
铬:
Sat Mar 25 2017 00:00:00 GMT+0100 (CET)
Safari:
Invalid Date
因此,只需将-替换为/即可。
使用更正日期字符串/
以下代码将返回以下
new Date('03/25/2017');
Chrome:
Sat Mar 25 2017 00:00:00 GMT+0100 (CET)
*Safari:
Sat Mar 25 2017 00:00:00 GMT+0100 (CET)