如何在safari浏览器中显示开始日期和当前星期的当前日期
how to display start date and current date of current week in safari browser
我试图使用html在日期选择器中显示当前星期的开始日期和当前日期,在chrome和firefox中它工作良好,但在safari中它不显示。这是我的代码
<label>From Date</label>
<input type="date" id="dtp" required>
<label>To Date</label>
<input type="date" id="dtf" required>
这些是我的HTML日期选择器,下面是我的脚本
function getMondayOfCurrentWeek(d){
var day = d.getDay();
return new Date(d.getFullYear(), d.getMonth(), d.getDate() + (day == 0?-6:1)-day )
}
function Datep(){
document.getElementById("dtp").valueAsDate = new Date();
document.getElementById("dtf").valueAsDate = getMondayOfCurrentWeek(new Date());
}
所以这里页面加载我插入这个函数时,页面加载它将显示当前日期和周开始日期。这是工作在chrome和firefox,但不工作在safari..
属性valueAsDate可能没有定义。如果你在ie11或FF 48下测试你的代码,你会发现这个属性是未定义的。
你可以添加一个Polyfill来解决你的问题:
if(!("valueAsDate" in HTMLInputElement.prototype)){
Object.defineProperty(HTMLInputElement.prototype, "valueAsDate", {
get: function(){
var d = this.value.split(/'D/);
return new Date(d[0], --d[1], d[2]);
},
set: function(d){
var day = ("0" + d.getDate()).slice(-2),
month = ("0" + (d.getMonth() + 1)).slice(-2),
datestr = d.getFullYear()+"-"+month+"-"+day;
this.value = datestr;
}
});
}
function getMondayOfCurrentWeek(d){
var day = d.getDay();
return new Date(d.getFullYear(), d.getMonth(), d.getDate() + (day == 0?-6:1)-day )
}
function Datep(){
document.getElementById("dtp").valueAsDate = new Date();
document.getElementById("dtf").valueAsDate = getMondayOfCurrentWeek(new Date());
}
Datep();
<form>
<label>From Date</label>
<input type="date" id="dtp" required>
<label>To Date</label>
<input type="date" id="dtf" required>
</form>
Safari不支持required
属性,需要使用JavaScript。
此页包含一个解决方案,但它只是一种补丁。
您可以在本页找到相关解决方案。
如果你使用jQuery,那么下面的代码会更好。只需将此代码放在jquery.min.js
文件的底部,它适用于每个表单。
只需将此代码放在您的通用.js
文件中,并在此文件之后嵌入jquery.js
或jquery.min.js
$("form").submit(function(e) {
var ref = $(this).find("[required]");
$(ref).each(function(){
if ( $(this).val() == '' )
{
alert("Required field should not be blank.");
$(this).focus();
e.preventDefault();
return false;
}
}); return true;
});
这个方法适用于所有不支持html5代码required
属性的浏览器
相关文章:
- 如何在JavaScript中延长当前日期
- 使用当前日期生成随机id
- 无法将picadate日期选择器重置为指向当前月份
- JavaScript日期接收为像这次旅行一样的对象.日期:“/日期(1426530600000)/”;
- 如何使用 javascript 获取 UTC 格式的日期,而不考虑当前系统日期
- 选择数据属性日期值早于当前服务器日期的元素
- 将变量日期与 if/else 语句中的日期(日期字符串)进行比较
- 日期日期对象与输入不同
- JavaScript 新日期(日期)返回错误的日期
- 日期(日期字符串)构造函数不一致
- 点击按钮获取当前系统日期时间
- 如何写日期|日期:"MM”;在ng类中
- javascript数组查找具有当前日期+日期的最近日期
- 将UTC中的Epoch转换为当前时区日期
- 如何将当前月份日期更改为另一个月
- 将当前时间日期放在隐藏字段中
- 向已经选择的日期(当前在日期选择器文本框中的日期)添加一定天数
- 如何将当前输入日期添加到动态列表中?
- 显示当前和+1日期的Javascript时间
- 在 Javascript 中将 ISO 8601 字符串转换为当前时区日期时间对象