Dies wird sehr kompliziert mit Geräten wie dem Microsoft Surface, die mit einer Tastatur, Maus und einem Touchscreen ausgestattet sind. Und Sie können alle 3 Eingabemodi zu jedem beliebigen Zeitpunkt mischen oder eine andere Eingabemethode wie einen Stift hinzufügen.
Microsoft verwendet den Ansatz, Eingabeereignisse als "Zeigerereignisse" zu abstrahieren. Dieses Modell has been submitted to the W3C. Dies sollte Ihnen eine Vorstellung vom Trend bei der Verwaltung von Eingaben geben.
Immer noch finde ich es praktisch zu sehen, wenn die Berührung verfügbar ist und unter der Annahme, dass —, wenn es — ist, wird der Benutzer Touch-Eingabe zumindest einige der Zeit verwenden. Dies kann zu Designentscheidungen führen, um Dinge zu eliminieren, die völlig berührungsunfreundlich sind, obwohl dies eine Beeinträchtigung der Maus-/Tastaturfunktionalität bedeuten kann.
In Ihrem konkreten Fall würde ich mir genau überlegen, ob Sie nicht einmal input[type=number]
durch ein benutzerdefiniertes Steuerelement ersetzen müssen. Die meisten Touch-Geräte sind einigermaßen modern und viele haben benutzerdefinierte, berührungsfreundliche Versionen der Standard-HTML-Eingaben.
Denken Sie auch an Zugänglichkeitsszenarien, die native Steuerelemente wahrscheinlich gut "out of the box" unterstützen.
Wenn Sie ein benutzerdefiniertes Steuerelement implementieren möchten, rate ich Ihnen, Berührungsfunktionen zu erkennen und Ihr benutzerdefiniertes Steuerelement anzuzeigen, ob andere Eingabemechanismen vorhanden sind oder nicht. Dies bedeutet, dass das benutzerdefinierte Steuerelement mindestens (Touch-/Tastatur-/Maus-freundlich) ist.
Hier ist mein aktueller Note-Test (mit dem Vermerk, dass es morgen brechen könnte und hat mit Sicherheit nicht auf jedem Gerät getestet):
var supportsTouch = ("ontouchstart" in window) || window.navigator.msMaxTouchPoints > 0;
@Smiddty JavaScript könnte wahrscheinlich das Vorhandensein eines Screenreaders erkennen, was einen sehbehinderten Benutzer implizieren würde. –