元素类型'日期'当被getElementsByTagName()访问时,将其显示为' text'

时间:2014-12-09 11:37:14

标签: javascript html getelementsbytagname

当我尝试访问第一个文本框的类型时,它会显示" text"而不是" date"而当我尝试访问文本的大小时,它会显示正确的值。

为什么会这样?如何在Javascript中检查特定文本框的类型是日期还是文本?

<html>
<head>
<script>
function getElements()
  {
  var x=document.getElementsByTagName("input");
  alert(x[0].type);
  }
</script>
</head>
<body>

<input type="date" size="25"><br>
<input type="text" size="20"><br>
<input type="text" size="20"><br><br>
<input type="text" size="20"><br><br>
<input type="button" onclick="getElements()" value="How many input elements?">

</body>
</html>

3 个答案:

答案 0 :(得分:3)

桌面浏览器上基于日期和时间的输入时间为usually not available。因此,定义了这种类型的输入元素将默认为text类型。

因此,当您访问元素的type时,您将获得浏览器实际用于该元素的任何类型。

如果您想获得实际指定的值,忽略浏览器是否知道它,您可以使用getAttribute来表示原始值:

alert(x[0].getAttribute('type')); // date

答案 1 :(得分:1)

您的浏览器应支持input type="data",否则浏览器会将类型识别为text

支持表:http://caniuse.com/#feat=input-datetime

答案 2 :(得分:1)

typeinput DOM node的计算属性。因此,它反映了浏览器认为它应该是什么。该值只能来自手头浏览器支持的值列表,默认为text,如果未知。例如:

<input type="foo">

也会产生element.type === 'text'。在这种情况下,您的浏览器不支持type="date"方法,而是回退到纯文本输入字段。 (这是HTML5规范中的设计行为。)