Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何判断浏览器是否支持<;输入类型=';日期'&燃气轮机;_Javascript_Html - Fatal编程技术网

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);
}