Javascript 如何判断浏览器是否支持<;输入类型=';日期'&燃气轮机;
可能重复:Javascript 如何判断浏览器是否支持<;输入类型=';日期'&燃气轮机;,javascript,html,Javascript,Html,可能重复: 应该使用(可选)用户代理提供的日期选择器创建输入,但它还没有得到广泛支持,因此我们使用jQuery UI日期选择器。我们如何允许浏览器使用他们自己的日期选择器,并且只有在浏览器没有这样的东西时才使用jqueryui呢 目前我认为只有Opera有内置的日期选择器,但对Opera的测试显然是不好的。是否有一种方法可以检测此功能(如果它可以以便携方式)?下面的方法检查大多数浏览器是否支持某些输入类型: function checkInput(type) { var input
应该使用(可选)用户代理提供的日期选择器创建输入,但它还没有得到广泛支持,因此我们使用jQuery UI日期选择器。我们如何允许浏览器使用他们自己的日期选择器,并且只有在浏览器没有这样的东西时才使用jqueryui呢
目前我认为只有Opera有内置的日期选择器,但对Opera的测试显然是不好的。是否有一种方法可以检测此功能(如果它可以以便携方式)?下面的方法检查大多数浏览器是否支持某些输入类型:
function checkInput(type) {
var input = document.createElement("input");
input.setAttribute("type", type);
return input.type == type;
}
但是,正如评论中提到的,一些浏览器(如Android股票浏览器)假装支持某种类型(如日期),但它们不提供日期输入的UI。因此,使用在日期字段中设置非法值的技巧改进了实现。如果浏览器清理了这个输入,它还可以提供一个日期选择器
function checkDateInput() {
var input = document.createElement('input');
input.setAttribute('type','date');
var notADateValue = 'not-a-date';
input.setAttribute('value', notADateValue);
return (input.value !== notADateValue);
}
检测日期支持是复杂的,因为不同的浏览器支持不同级别的日期。有些提供了一个不错的日历日期选择器。其他人只是验证它看起来像一个日期。这正是我问这个问题的原因。我想知道浏览器是否有日期选择器,而不是它是否声称能够理解日期输入。这不是一个副本,下面的答案没有帮助。我只是从来没有抽出时间去更新或竞争。我只是选择了
,并且总是使用jquery ui datepicker(老式的方式)。应该注意的是,在桌面浏览器上,日期输入ui通常会留下一些不需要的东西。即使他们支持,您也可能不想使用它。此问题似乎不会影响移动浏览器。在android stock浏览器中不起作用,它返回true但不支持datepickerAsking,因为type属性在所有android stock浏览器中都不起作用。它们假装支持inputType=date,但不提供日期输入的UI。这个功能检测对我来说很有效:function(){var el=document.createElement('input'),notADateValue='not-a-date';el.setAttribute('type','date');el.setAttribute('value',notADateValue');return!(el.value==notADateValue);}诀窍是在日期字段中设置非法值。如果浏览器清理了这个输入,它还可以提供一个日期选择器。你是说“!=”!=“=”!=”?:)@MattyBalaam显然这是一个语法错误。我修好了:)这太棒了。另一个问题是,通过输入日期,您可以将日期设置为yyyy mm dd,并将其显示为您的区域设置格式。如果不这样做,则需要在设置现有值时将日期格式化为区域设置,并将其转换回数据库存储或处理
function checkDateInput() {
var input = document.createElement('input');
input.setAttribute('type','date');
var notADateValue = 'not-a-date';
input.setAttribute('value', notADateValue);
return (input.value !== notADateValue);
}