Używam elementów HTML5 i mam fajne zachowanie. Działa to tylko w Chrome.Urządzenie do odbierania zdarzeń HTML5 do przewijania wprowadzania liczb - tylko Chrome
Za pomocą typu wprowadzania numeru można ustawić min, maksimum i krok oraz uzyskać strzałki w górę iw dół, aby kontrolować dane wejściowe. <input type="number" min="0" max="100" step="5" />
Stwierdziłem, że powiązanie detektora zdarzeń kliknięcia przechwytuje naciśnięcia strzałek, ponieważ zmiana nie nastąpi, dopóki pole nie będzie rozmyte. Możesz także użyć klawiszy strzałek w górę iw dół na klawiaturze, aby zmienić wartość w granicach, a powiązanie z naciśnięciem klawisza może je wybrać.
W Chrome można jednak również użyć kółka myszy do zmiany wejścia, najeżdżając kursorem na dane wejściowe i przewijanie. Nie udało mi się jednak znaleźć sposobu, aby posłuchać tego wydarzenia.
HTML:
<input type="number" min="0" max="100" step="5" id="test" />
JavaScript (jQuery):
$('#test').click(function(){
$(this).after('<br />click');
});
$('#test').change(function(){
$(this).after('<br />change');
});
$('#test').keypress(function(){
$(this).after('<br />keypress');
});
Wszelkie pomysły jak słuchać tej zmiany przewijania? Znowu działa to tylko w Chrome od tego pisania.
Chociaż nie jest to odpowiedź na twoje pytanie, możesz również rozważyć śledzenie zmian wartości z pętli setTimeout, zastępując wszystkie obsługi zdarzeń. Nie świetna wydajność, ale działa z dowolną metodą wprowadzania. –
To by całkowicie działało. Nawet po prostu uruchom timer na fokus i zabij go przy rozmyciu. Tak poważny przypadek, że nie będę się tym martwić o produkcję, ale byłem ciekawy teoretycznej wartości. – hookedonwinter
FWIW - wygląda na to, że chrome uruchamia teraz zdarzenie zmiany po przewinięciu pola wprowadzania liczb lub kliknięciu przycisków zwiększania wartości. –