Użytkownik może zmienić wartość za pomocą strzałek w górę/w dół, które są częścią pola INPUT w HTML5 INPUT type='number'
. Użytkownik może również kliknąć pole, aby ustawić ostrość lub edytować jego zawartość.HTML5 INPUT type = 'number' - rozróżnia kliknięcia myszą i wartością zmiany
Czy istnieje jakiś prosty sposób na rozróżnienie tych dwóch działań w wyzwalaczu click
?
z odpowiedzi @cvsguimaraes, która lepiej demonstruje teorię.
używając swojej metodologii, oto moja ukończona (?) Wersja. cel: upewnij się, że regularne wyzwalacze change
są wywoływane podczas używania +/- do zmiany danych.
// input/mouseup triggers to call change from +/- mouse clicks
// want to wait 500ms before calling change in case successive clicks
render.inputCh = false;
render.inputCt = 0;
render.inputFn = function(e) {
render.inputCh = true;
}
render.mouseupFn = function(e) {
if(render.inputCh) {
render.inputCh = false;
render.inputCt++;
setTimeout(next, 500);
}
function next() {
render.inputCt--;
if(render.inputCt) return;
var change = document.createEvent("Event");
change.initEvent('change',true,true);
e.target.dispatchEvent(change);
}
}
// using input/mouseup triggers
document.getElementById('number').addListener('input',render.inputFn,true);
document.getElementById('number').addListener('mouseup',render.mouseuptFn,true);
// normal change trigger - will be called normally and via +/- mouse click
document.getElementById('number').addListener('change',changeFn,false);
na chromie to działa bez zarzutu tak daleko wyjątkiem że po wyjęciu ostrość od item change
spust rozpocznie się ponownie. Rozwiązałem to przez wprowadzenie wyzwalacza zmiany niskiego poziomu, który zatrzymuje propagację, jeśli poprzednie wywołanie zmiany pochodziło z mouseup
.
ARENT myszy {dół, w górę} prasę i zwolnij zdarzenia, zamiast kliknięcia te górne/dolne? – fbstj
Nie odpowiem, ponieważ nie wiedziałem o tym od siebie; ale wydaje się, że to naprawdę zawiły sposób, by powiedzieć "nie używaj kliknięcia, używaj danych wejściowych". –
@FallingBullets yah, ale wydłużysz wydarzenie oninput – cvsguimaraes