2010-09-16 21 views
9

Giriş metni değerini büyük harf olarak değiştirmek için onkeyup="this.value=this.value.toUpperCase();" kullanıyorum. Bu çalışıyor ama benim ihtiyacım fare olayını kullanmadan giriş kutusunda tek bir harf değiştirmektir. Eğer imleci geri hareket ettirmek için sol ok tuşunu kullanırsam onkeyup olayı tetiklenir ve imleç sonlanır. Ben ok tuşlarını kullanarak geriye gidin ve geçerli kod şöyle Girdi yazarken büyük harfle giriş nasıl değiştirilir

arasında bir yerde bir metni değiştirebilirsiniz şekilde nasıl ... bu senaryoyu değiştirmek yok

<h:inputText value="#{_input.response}" autocomplete="off" onmouseover="this.focus();" onkeyup="this.value=this.value.toUpperCase();"/> 
+0

Öğe bulanıklık olayında bunu yaparsanız çok daha kolay olurdu. –

+0

Bir son kullanıcı olarak, uygulamanızı kullanmadığına sevindim, eğer böyle şeyler yaptıysa kullanmayı bıraktım! Ben üzerinde değişiklik olması için yazdığımda çok rahatsız edici buluyorum. Büyük harfle değere ihtiyacınız varsa, ben gönderdikten/gönderdikten sonra yapın - neden yazdığımda kötüye gideyim? Yaptığınız şey, bazı kardinal kuralı/yazılım oluşturma yasasını ihlal etse de emin değilim ama eğer IMHO yoksa, bu hatlarda bir tane olmalı. – InSane

+0

Sane'de Anlaşıldı. Bu sinir bozucu kapaklar açmak için benim de büyük olasılıkla benim kapama anahtarım isabet devam ediyorum: P –

cevap

28

Nasıl CSS hakkında:

input.upper { text-transform: uppercase; } 

Açıklama: Bu değer yine de, kullanıcı tarafından yazılan ve genişletilmiş olmayan sunucuya gönderilir.

+0

Aslında giriş gerçekten büyük kalacağından emin değilim. Bu sadece bir stil hile mi yoksa metin gerçekten büyük harflere dönüşüyor mu (eğer formun içeriğini bir veritabanına yazarsanız)? –

+3

Büyük harfle stilleyin, ardından aldığınız zamanı sunucu olarak değiştirin. –

+2

Yine de sunucuda büyük harf kullanmanız gerekecek. JS kapatılır ve büyük harf kullanırsanız, sunucuda doğrulaması gerekir – mplungjan

0

Onkeyup'a hangi tuşa basıldığını ve sadece a-z tuşları için işlem yaptığınızı kontrol edebilirsiniz. Anahtar kodları sayısal olduğundan ve tuş kodunun (65) ve z (90) tuş kodları arasında olup olmadığını kontrol edebilmeniz oldukça kolay olmalıdır.

0

Kristoffer'ın yaptığı gibi, muhtemelen stili kullanmak ve sunucuya dönüştürmek en iyisi. büyük zorlamak için bir jQuery eklentisi de vardır: http://plugins.jquery.com/plugin-tags/uppercase

<html> 
    <head> 
     <style> 
      input.upc { text-transform: uppercase; } 
     </style> 
     <script> 
      // thanks 2 'm2pc' : http://www.webdeveloper.com/forum/showpost.php?s=9f258cba84d461026bb9ed478e86776d&p=423545&postcount=3 
      function doGetCaretPosition (oField) { 
       var iCaretPos = 0; 
       if (document.selection) // IE Support 
        { 
        oField.focus(); 
        var oSel = document.selection.createRange(); 
        // Move selection start to 0 position 
        oSel.moveStart ('character', -oField.value.length); 
        // The caret position is selection length 
        iCaretPos = oSel.text.length; 
        } 
       else 
        if (oField.selectionStart || oField.selectionStart == '0') // Firefox support 
         iCaretPos = oField.selectionStart; 
       return (iCaretPos); 
       } 
      function doSetCaretPosition (oField, iCaretPos) 
       { 
       if (document.selection) // IE Support 
        { 
        oField.focus(); 
        var oSel = document.selection.createRange(); 
        oSel.moveStart ('character', -oField.value.length); 
        oSel.moveStart ('character', iCaretPos); 
        oSel.moveEnd ('character', 0); 
        oSel.select(); 
        } 
       else 
        if (oField.selectionStart || oField.selectionStart == '0') // Firefox support 
         { 
         oField.selectionStart = iCaretPos; 
         oField.selectionEnd = iCaretPos; 
         oField.focus(); 
         } 
       } 
      function forceupper(o) 
       { 
       var x = doGetCaretPosition(o); 
       o.value=o.value.toUpperCase(); 
       doSetCaretPosition(o,x); 
       } 
     </script> 
    </head> 
    <body> 
     <form method="get" target="#"> 
      Fld 1 : browser shows upper-case, form submits mixed-case<br> 
      <input name="f1" id="idf1" class="upc" type="text" value="X"><br> 
      Fld 2 : javascript updates text to uppercase, form submits uppercase<br> 
      <input name="f2" id="idf2" class="js" type="text" value="Y" onkeyup="forceupper(this);"><br> 
      <input type="submit" value="send"> 
     </form> 
    </body> 
</html> 
3

bir örnek olabilir: 3 metin harf sınıfları ile bileşenlerinde metin dönüşümü dönüşümü sınıfları vardır

<p:inputText id="nombres" 
      value="#{userController.user.nombres}" 
      style="text-transform: uppercase" /> 
+0

SO Juan'a hoş geldiniz. '<' & '> 'için güzel bir render yapmaya çalışmak yerine, kodu vurgulamak için 4 boşluk ekleyiniz ya da' 'arasına koyunuz. – j0k

-1

önyükleme.

<p class="text-lowercase">Lowercased text.</p> 
<p class="text-uppercase">Uppercased text.</p> 
<p class="text-capitalize">Capitalized text.</p> 
İlgili konular