元素类型“date”在由getElementsByTagName()访问时将其显示为“文本”

Element type 'date' when accessed by getElementsByTagName() shows it as 'text'

本文关键字:显示 访问 文本 date 类型 在由 getElementsByTagName 元素      更新时间:2023-09-26

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

为什么会这样?如何在 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>

基于日期和时间的输入时间通常在桌面浏览器上不可用。因此,定义了此类类型的输入元素将默认为 text 类型。

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

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

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

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

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

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

<input type="foo">

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