Questo diventa davvero complicato con dispositivi come Microsoft Surface, che sono dotati di tastiera, mouse e schermo tattile. E puoi mescolare tutte e 3 le modalità di input in un dato momento oppure aggiungere un altro metodo di input come uno stilo.
Microsoft sta adottando l'approccio di astrarre gli eventi di input come "eventi puntatore". Questo modello has been submitted to the W3C. Questo dovrebbe darti un'idea della tendenza nella gestione dell'input.
Ancora, trovo che sia utile vedere se il tocco è disponibile e funziona presupponendo che — se è — l'utente utilizzerà l'input tattile almeno una parte del tempo. Ciò può portare a decisioni di progettazione per eliminare cose che sono completamente sfavorevoli al tatto, anche se ciò potrebbe significare compromettere le funzionalità del mouse/tastiera.
Nel tuo caso specifico, darei un'occhiata se o non hai nemmeno bisogno di sostituire input[type=number]
con un controllo personalizzato. La maggior parte dei dispositivi touch è abbastanza moderna e molti hanno versioni personalizzate e intuitive degli input HTML standard.
Ricordare inoltre gli scenari di accessibilità che i controlli nativi probabilmente supportano "immediatamente".
Se si decide di implementare un controllo personalizzato, suggerirei di rilevare le funzionalità di tocco e di mostrare il controllo personalizzato indipendentemente dalla presenza o meno di altri meccanismi di input. Ciò significa che il controllo personalizzato è (almeno) touch/tastiera/mouse amichevole.
Ecco la mia prova contatto corrente (con il disclaimer che potrebbe rompersi domani e certamente non è stato testato su tutti i dispositivi):
var supportsTouch = ("ontouchstart" in window) || window.navigator.msMaxTouchPoints > 0;
fonte
2013-04-24 22:31:14
@Shmiddty JavaScript potrebbe probabilmente rilevare la presenza di uno screen reader, il che implicherebbe un utente ipovedente. –