2017-07-25 90 views
4

鉴于非常简单的代码:为什么.prop(“type”)在datetime输入中返回“text”?

<html> 
<body> 
    <input type="datetime" id="TheInput"/> 
    <script type="text/javascript" src="./jquery-3.2.1.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      alert($("#TheInput").prop("type")); 
     }); 
    </script> 
</body> 
</html> 

你会认为这些URL会说:“日期时间”,不是吗?但显然它没有,它说“文本”。 jQuery如何以及为什么决定忽略我为该类型编写的内容?我不应该能够为“type”属性编写任何任意类型,并将其发回给我?有没有jQuery认为某些类型应该是什么的列表?

(另外,不要试图把它放到jsFiddle或codepen中。这两个出于某种原因拒绝运行我的javascript。我不知道我是否被允许使用“prop”或者如果我不被允许通过ID搜索,或者什么)。

+1

https://jsfiddle.net/gywodrpo/ –

+2

它并不特定于jQuery:日期时间输入的'type'属性是''text''; –

+2

无论输入的“真实”类型是什么,使用'attr'都会返回属性中写的任何内容。实际的类型会反映在属性中,它**是针对不推荐使用的'datetime'类型的**'text',以及任何其他无效类型 – adeneo

回答

4

输入类型datetime aren't supported anymore

浏览器用输入的文本替换它们。这就是为什么输入的类型属性是"text"

解决方案是使用datetime-local类型的输入。

console.log("type a : " + document.getElementById("a").type); 
 
console.log("type b : " + document.getElementById("b").type);
<input id=a type=datetime> 
 

 
<input id=b type=datetime-local>

当然,你也可以读出的属性值(使用attr用jQuery),但它会隐藏真实输入的类型。

相关问题