2014-07-21 10 views
8

Uygulama sahiplerim, kapak kilidi açıkmış gibi büyük harfli metin alanları seçilmesini istiyor. Bu alanlar için gözlemlenebilir bir KnockoutJS viewmodel kullanıyorum. Kullanıcının girdiği metni büyük harfe dönüştürmek için kullanabileceğim bir yol var mı?Seçilmiş Alanlar İçin Metni KnockoutJS Kullanarak Büyük Harf Olarak Nasıl Değiştirilir?

Değiştirmek istediğim denetimlerde bir input olayı koydum, ancak çalışmasına rağmen, gözlenebilirlerin güncelleştirilmediğini gördü.

<input type="text" maxlength="80" data-bind="value: colorName, disable: $parent.isReadOnly, event: { 'input': toUpper }" /> 

toUpper: function (d, e) { 
    if (e.target) { 
     if (e.target.value) { 
      e.target.value = e.target.value.toUpperCase(); 
     } 
    } 
} 

Ben de denetimi konusunda bir ucase CSS sınıfı niyetindeydim edilmiştir Ben harflerle bu alanları tasarrufu istemci veya sunucu üzerinde ya sonra büyük harf ve, olmak istiyorum.

.ucase { 
    text-transform: uppercase; 
} 

cevap

8

Sen gözlenebilirleri uzanabilir -

<input data-bind="value: colorName, valueUpdate:'afterkeydown'" /> 

ko.extenders.uppercase = function(target, option) { 
    target.subscribe(function(newValue) { 
     target(newValue.toUpperCase()); 
    }); 
    return target; 
}; 

var colorName = ko.observable().extend({ uppercase: true }); 

keman örnek - Değer, büyük harfe gözlemlenebilir değerini dönüştürür değiştirir Temelde her

http://jsfiddle.net/kbFwK/. Buradaki dezavantaj, değeri gerçekten değiştirmesi ve aynı şekilde saklamasıdır. Her zaman hesaplanmış bir özelliği, sadece görüntüleme amaçlı olarak gözlemlenebilir üzerine yapıştırabilirsiniz. Bunu ko.computed, özel bir bağlayıcı işleyici kullanarak (yalnızca sunum için olduğu için) veya benzer bir şeyi kullanarak yapabilirsiniz. Bu aradığınız şeyden daha fazlası ise, bir yorum ile bana bildirin. afterkeydown ile güncellendi Düzenleme

- http://jsfiddle.net/kbFwK/2/

+0

Ben üst Caps Lock anahtarı eğer içinde olduğu gibi kullanıcı yazarken kasalı katkıda bulunmaları gerekir. İlk yazımda bahsetmeyi ihmal ettim. Sorumu güncelledim. Bu olsa iyi bir fikir. – DaveB

+0

Yapmanız gereken tek şey, tuşa basma konusunda bilgilendirmektir. Bunu kemanıma ekledim. –

+0

Extender'ı kullanmayı seviyorum. Yardım için teşekkürler! – DaveB

İlgili konular