2017-07-25 140 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),但它會隱藏真實輸入的類型。

相關問題