2012-04-15 14 views
9

[vedere fiddle per l'illustrazione]valueUpdate: 'afterkeydown' per input type = "numerica" ​​in Knockoutjs 2.0

ho creato un legano valore a un input del numero tipo, e vogliono il limite observable per riflettere immediatamente le modifiche al valore del campo. per farlo ho impostato il valore vincolante. Questo funziona bene per cambiare il numero di input usando i tasti freccia su e freccia giù. Tuttavia, se cambio il numero utilizzando il controllo di incremento/decremento generato dal browser (testato in chrome), il cambiamento si riflette solo sulla modifica del focus su un elemento diverso. Presumo che questo rifletta l'aggiornamento predefinito all'evento di modifica.

La mia domanda è se esiste un modo per impostare l'aggiornamento per entrambe le modifiche utilizzando gli errori della tastiera verso l'alto e i controlli di errore su/giù generati dal browser?

risposta

18

Il bind aggiuntivo valueUpdate può richiedere una serie di eventi. Sembra che l'evento oninput venga attivato quando si fa clic sulle frecce su/giù.

Quindi, è possibile associare le cose come:

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

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

+0

eccellente, funziona come un fascino. Grazie! – odedbd

+0

Usando questo nel mio modulo DotNetNuke MVVM ottengo minuscoli (!) Pulsanti di selezione e spinner-down. Sono così piccoli che è quasi impossibile usarli. Riconosco che è una cosa CSS, ma non è stato in grado di capirlo. Se io invece del vai con ogni cosa sembra carina, ma il valoreUpdate non funziona ... Le cose che ti fanno andare hmm ... –

+0

Aveva un problema con gli script di test del selenio che non aggiornavano gli osservabili, e questo lo risolse per me. – AaronLS

Problemi correlati