2012-04-15 11 views
9

değişiklikleri hemen yansıtacak şekilde bağlanmış observable I tipi sayısının input bir değer bağlama kurmakvalueUpdate: Knockoutjs olarak = "sayısal" giriş tipine 'afterkeydown' 2.0

[gösterim amacıyla fiddle bakınız] ve isteyen alanın değerine. Bunu yapmak için afterkeydown valueUpdate bağlamayı ayarladım. Bu, yukarı ve aşağı ok tuşlarını kullanarak sayı girişini değiştirmek için iyi çalışır. Bununla birlikte, tarayıcı tarafından oluşturulan (kromda test edilmiş) arttırma/azaltma kontrolünü kullanarak sayıyı değiştirirsem, değişiklik sadece odağı değiştirerek farklı bir öğeye yansır. Bunun, değişiklik olayıyla ilgili varsayılan güncellemeyi yansıttığını varsayalım.

Sorum şu ki, her iki değişiklik için de yukarı aşağı klavye hatalarını ve tarayıcı tarafından oluşturulan yukarı/aşağı hata denetimlerini kullanarak güncelleştirmenin gerçekleşmesi için herhangi bir yolun olup olmadığı sorusu mu?

cevap

18

valueUpdate ek ciltleme, bir dizi olaya neden olabilir. Yukarı/aşağı okları tıklatıldığında oninput olayının tetiklendiği anlaşılıyor.

Yani, hoşuna bağlayabilir:

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

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

+0

Mükemmel, bir cazibe gibi çalışır. Teşekkürler! – odedbd

+0

Bunu MVVM DotNetNuke modülümde kullanarak küçük (!) Sıkıcı ve döndürücü düğmeler elde ediyorum. Çok küçükler, onları kullanmak neredeyse imkansız. Ben bir CSS-şeyini tamamladım, ama anlayamadım. Eğer yerine ile gidersiniz. valueUpdate işe yaramıyor… Sizi gitmenizi sağlayan şeyler ... –

+0

Selenium test komut dosyaları ile ilgili bir sorun gözlemlenebilir olmadı ve bu benim için çözüldü. – AaronLS