88

可能重复:
HTML5 类型检测和插件初始化

<input type=date>

应该使用(可选)用户代理提供的 datepicker 创建一个输入,但它尚未得到广泛支持,因此我们使用的是 jQuery UI Datepicker。如果浏览器没有这样的东西,我们如何允许浏览器使用他们自己的日期选择器并回退到jQuery UI?

目前我认为只有 Opera 有一个内置的日期选择器,但对 Opera 的测试显然会很糟糕。有没有办法可以检测到这个功能(如果它可以以便携的方式)?

4

1 回答 1

144

下面的方法检查大多数浏览器是否支持某些输入类型:

function checkInput(type) {
    var input = document.createElement("input");
    input.setAttribute("type", type);
    return input.type == type;
}

但是,正如simonox在评论中提到的那样,一些浏览器(如 Android 股票浏览器)假装它们支持某种类型(如日期),但它们不提供用于日期输入的 UI。因此simonox使用在日期字段中设置非法值的技巧改进了实现。如果浏览器清理了这个输入,它也可以提供一个日期选择器!!!

function checkDateInput() {
    var input = document.createElement('input');
    input.setAttribute('type','date');

    var notADateValue = 'not-a-date';
    input.setAttribute('value', notADateValue); 

    return (input.value !== notADateValue);
}
于 2012-04-17T21:17:33.667 回答