En HTML5 INPUT type='number'
, el usuario puede cambiar el valor haciendo clic en las flechas arriba/abajo que forman parte del cuadro ENTRADA. El usuario también puede hacer clic en el cuadro para enfocar o editar sus contenidos.Tipo de entrada HTML5 = 'número': distinga entre clics de mouse de foco y cambio de valores
¿Hay alguna manera fácil de distinguir entre estas dos actividades en el disparador click
?
de @cvsguimaraes answer, que demuestra mejor la teoría.
usando su metodología, aquí está mi versión final (?). el propósito: asegúrese de llamar a los activadores change
cuando usa +/- para cambiar los datos.
// 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);
en el cromo está funcionando sin problemas hasta ahora , excepto que cuando se quita el foco del tema, el gatillo change
entrará en funcionamiento de nuevo. Lo resolví teniendo un activador de cambio de bajo nivel que detiene la propagación si la llamada de cambio anterior era del mouseup
.
enviaban ratón {abajo, arriba} la prensa y la liberación eventos, en lugar de las principales clic/las de abajo? – fbstj
No responderé, porque no lo sabía por mí mismo; pero esto parece una forma muy complicada de decir "no use clic, use input en su lugar". –
@FallingBullets yah, pero se suma al evento oninput – cvsguimaraes