为什么IE和FF不会为输入类型日期返回正确的属性或类型

时间:2014-12-08 13:09:51

标签: javascript jquery html5 date input

在您回答之前,他们不支持输入日期",请阅读问题;)

我有这个(简化):

<input type="date" />

并且使用JS和/或jQuery我希望能够用它做一些事情,所以我寻找类似的东西:

var input = el.querySelector("input")[0]; // returns the input
var inputType = input.type; // returns "date" in Chrome, "text" in IE, FF

所以我试图比这更聪明,并做到了这一点:

var inputType = $("input")[0].attr("type"); 

但它仍会返回&#34;文字&#34; ..

任何可以强迫它返回日期的想法/黑客?我不希望使用类/ id选择器作为通用系统,我不一定能控制它们。

谢谢!

4 个答案:

答案 0 :(得分:2)

这里有一些关于属性和属性的混淆。

首先,Firefox和IE不支持inputtype="date"(在撰写本文时,IE11,Firefox 34)。检查支持table。默认情况下,浏览器会将未知输入类型视为text。在这种情况下,DOM元素对象的属性也将是text。这是您在此代码中观察到的内容:

var input = document.querySelector("input");
var inputType = input.type; // will give `text` in Firefox and IE

但是,即使浏览器不支持此输入类型,属性值仍为date

var input = document.querySelector("input");
var inputType = input.getAttribute("type"); // will give `date` everywhere

答案 1 :(得分:1)

IE和FF(以及Chrome)都返回date

var inputType = $("input").attr("type");

http://jsfiddle.net/6mnqfhe4/

答案 2 :(得分:0)

var inputType = $("input")[0].attr("type"); 

这段代码不起作用,因为$('input')[0]返回DOM元素(未包装在jQuery中),如果你想为第一次输入检索jQuery元素,请尝试:

var inputType = $("input").eq(0).attr("type");
// or
var inputType = $("input:first").attr("type");

答案 3 :(得分:0)

@dsfq是正确的,FF或IE都不支持日期字段,并默认它们的行为类似于文本字段。但是,@ Kristoffer也是正确的,他们仍然报告为&#34; date&#34;浏览器的字段(使用JQuery 1.6.2一直回到IE7)。

var inputType = $("input").attr("type");

此代码返回HTML中第一个输入字段的类型,我假设它是type="text",因为这是JQuery可以返回的唯一方式& #34; text&#34;,给出您对ID感兴趣的输入并将其用作选择器,如下所示:

var inputType = $("#inputId").attr("type");

或将选择限制为仅选择日期输入:

var inputType = $("input[type=date]").attr("type");