当我尝试访问第一个文本框的类型时,它会显示" 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>
答案 0 :(得分:3)
桌面浏览器上基于日期和时间的输入时间为usually not available。因此,定义了这种类型的输入元素将默认为text
类型。
因此,当您访问元素的type
时,您将获得浏览器实际用于该元素的任何类型。
如果您想获得实际指定的值,忽略浏览器是否知道它,您可以使用getAttribute
来表示原始值:
alert(x[0].getAttribute('type')); // date
答案 1 :(得分:1)
您的浏览器应支持input type="data"
,否则浏览器会将类型识别为text
。
答案 2 :(得分:1)
type
是input
DOM node的计算属性。因此,它反映了浏览器认为它应该是什么。该值只能来自手头浏览器支持的值列表,默认为text
,如果未知。例如:
<input type="foo">
也会产生element.type === 'text'
。在这种情况下,您的浏览器不支持type="date"
方法,而是回退到纯文本输入字段。 (这是HTML5规范中的设计行为。)