2012-04-15 9 views
9

[ver fiddle para la ilustración]valueUpdate: 'afterkeydown' para el tipo de entrada = "numérico" en Knockoutjs 2,0

I fijó un aprieto valor a un input de número de tipo, y desea que el observable unido a reflejar inmediatamente cambios al valor del campo para hacer eso configuré el afterkeydown valueUpdate binding. Esto funciona bien para cambiar la entrada de número usando las teclas de flecha arriba y flecha abajo. Sin embargo, si cambio el número usando el control de incremento/decremento generado por el navegador (probado en cromo), el cambio solo se refleja al cambiar el enfoque a un elemento diferente. Supongo que esto refleja la actualización predeterminada al evento de cambio.

Mi pregunta es si hay alguna forma de configurar la actualización para ambos cambios utilizando los errores de teclado hacia arriba y los controles de error hacia arriba/abajo generados por el navegador.

Respuesta

18

El enlace adicional valueUpdate puede tomar una variedad de eventos. Parece que el evento oninput se activa al hacer clic en las flechas arriba/abajo.

Por lo tanto, se puede obligar a éste como:

<input type="number" data-bind="value: y, valueUpdate: ['afterkeydown', 'input']"/>

http://jsfiddle.net/rniemeyer/hY5T2/9/

+0

excelente, funciona como un encanto. Gracias! – odedbd

+0

Usando esto en mi módulo MVVM DotNetNuke obtengo pequeños (!) Botones de spinner-up y spinner-down. Son tan pequeños que es casi imposible usarlos. Reconozco que es una cosa de CSS, pero no he podido descifrarlo. Si en lugar del vaya con todo se ve bien, pero el valueUpdate no funciona ... Cosas que te hacen ir hmm ... –

+0

Tuve un problema con los scripts de prueba de Selenium que no actualizaban los observables, y esto lo resolvió por mí. – AaronLS

Cuestiones relacionadas