2012-04-17 8 views
63

Mögliche Duplizieren:
HTML5 Type Detection and Plugin InitializationWie kann ich feststellen, ob ein Browser unterstützt <input type = 'date'>

<input type=date> 

einen Eingang mit einem erstellen sollte (optional) user-agent hat datepicker zur Verfügung gestellt, aber es wird noch nicht allgemein unterstützt, daher verwenden wir einen jQuery UI Datepicker. Wie können wir es Browsern erlauben, ihren eigenen Datepicker zu verwenden und nur dann auf jQuery UI zurückzugreifen, wenn der Browser so etwas nicht hat?

Momentan denke ich, nur Opera hat einen eingebauten Datapicker, aber ein Test für Opera wäre offensichtlich schlecht. Gibt es eine Möglichkeit, dieses Feature zu erkennen (wenn es überhaupt portabel möglich ist)?

Dank

+0

Das Erkennen der Datumsunterstützung wird durch die Tatsache erschwert, dass verschiedene Browser Daten auf verschiedenen Ebenen unterstützen. Einige bieten einen schönen Kalender Datum-Picker. Andere bestätigen nur, dass es wie ein Date aussieht. – rjmunro

+1

Genau warum habe ich die Frage gestellt. Ich wollte wissen, ob der Browser einen Datepicker hat, nicht wenn er behauptet, Datumseingaben zu verstehen. Es ist nicht AFAICT ein Duplikat, und die Antworten unten helfen nicht. Ich bin nie auf Updates oder Wettbewerbe gekommen. Ich ging einfach mit '' und benutze immer jquery ui datepicker (altmodisch). – DaedalusFall

+1

Es sollte auf Desktop-Browsern beachtet werden, die Benutzeroberfläche für die Eingabe von Daten lässt oft etwas zu wünschen übrig. Selbst wenn sie es unterstützen, möchten Sie es möglicherweise nicht verwenden. Dieses Problem scheint mobile Browser nicht zu beeinträchtigen. –

Antwort

101

Das Verfahren unten überprüft, ob einige Eingabetyp von den meisten Browsern unterstützt wird:

function checkInput(type) { 
    var input = document.createElement("input"); 
    input.setAttribute("type", type); 
    return input.type == type; 
} 

Aber wie simonox in den Kommentaren erwähnt, so tun, als einige Browser (wie Android Lager-Browser) dass sie einen Typ unterstützen (als Datum), aber keine Benutzeroberfläche für Datumseingaben bieten. So verbesserte simonox die Implementierung mit dem Trick, einen illegalen Wert in das Datumsfeld zu setzen. Wenn der Browser diese Eingabe bereinigt, könnte er auch einen Datepicker anbieten !!!

function checkDateInput() { 
    var input = document.createElement('input'); 
    input.setAttribute('type','date'); 

    var notADateValue = 'not-a-date'; 
    input.setAttribute('value', notADateValue); 

    return (input.value !== notADateValue); 
} 
+8

Funktioniert nicht im Android-Stock-Browser, gibt True zurück, unterstützt aber nicht Datepicker –

+30

Die Abfrage des Type-Attributs funktioniert nicht in allen Android-Standard-Browsern. Sie geben vor, dass sie inputType = date unterstützen, aber sie bieten keine Benutzeroberfläche für Datumseingaben. Diese Feature-Erkennung für mich gearbeitet: function() { var el = document.createElement ('Eingang'), notADateValue = 'not-a-date'; el.setAttribute ('type', 'date'); el.setAttribute ('value', notADateValue); zurück! (El.value === notADateValue); } Der Trick besteht darin, einen ungültigen Wert in ein Datumsfeld zu setzen. Wenn der Browser diese Eingabe bereinigt, könnte er auch einen Datums-Picker anbieten. – simonox

+0

@simonox: eine sehr gute Lösung. Danke dafür –

Verwandte Themen