Metin kutusunu otomatik olarak Büyük Harfe nasıl ayarlarsınız?


131

Kullanıcı girişini büyük harfe ayarlamak için aşağıdaki stil özelliğini kullanıyorum, böylece kullanıcı, örneğin metin kutusuna yazmaya başladığında , kullanıcının Caps-lock düğmesine basmasına gerek kalmadan railwaybüyük harflerle değiştirilmelidir RAILWAY.

Giriş için kullandığım kod bu:

<input type = "text" class = "normal" name = "Name" size = "20" maxlength = "20"> <img src="../images/tickmark.gif" border="0" style='text-transform:uppercase'/>

Ama bu özniteliği kullanarak istediğim çıktıyı alamıyorum.


2
Aşağıda belirtildiği gibi, = ve "metin" değerleri arasında boşluk bırakmaya dikkat edin
Jonathan Safa

Yanıtlar:


261

Sen koyduk styleüzerinde niteliği <img>yerine, etiketi <input>.

Öznitelik adı ile değer arasında boşluk olması da iyi bir fikir değildir ...

<input type="text" class="normal" 
       name="Name" size="20" maxlength="20" 
       style="text-transform:uppercase" /> 
<img src="../images/tickmark.gif" border="0" />

Lütfen bu dönüşümün tamamen görsel olduğunu ve POST'ta gönderilen metni değiştirmediğini unutmayın .


67
Bu verileri bir POST yoluyla gönderirseniz, ekranda nasıl göründüğünü değil, yazdığınız şekilde göndereceğini unutmayın.
Vincent Poirier

@freefaller, tüm girdileri büyük harfe çevirdi, ancak mysql'e eklemek küçük harfli metin, Büyük harf nasıl değiştirilir!
David Çene Hpan

6
@David, önceki yoruma bakın. Dönüşüm tamamen görseldir. Sunucuya geri gönderilen temel metnin durumunu değiştirmez. Eğer büyük harf metni kaydetmek istiyorsanız kaydetmeden önce sunucuda dönüştürmek gerekir
freefaller

7
Yer tutucu artık büyük harf olduğundan (çoğu durumda olmamalıdır) bu tam bir çözüm değildir. JavaScript kullanmaktan başka bir yol yok.
tomericco

1
Değişikliklerin tamamen görsel değil, değer üzerinde yapılmasını isteyen geleceğin okuyucuları Burak Tokak'ın cevabına bakın .
Dinei

59

Bence büyük harfle gönderilmesini sağlayacak en sağlam çözüm, oninput yöntemini aşağıdaki gibi satır içi kullanmaktır:

<input oninput="this.value = this.value.toUpperCase()" />

DÜZENLE

Bazı insanlar, değeri düzenlerken imlecin sona atladığından şikayet ediyorlar, bu nedenle bu biraz genişletilmiş sürüm bunu çözmeli

<input oninput="let p=this.selectionStart;this.value=this.value.toUpperCase();this.setSelectionRange(p, p);" />


36

text-transformation:uppercaseStil ile verilen yanıtlar , sunma sırasında sunucuya büyük harfli verileri göndermeyecektir - ne bekleyebilirsiniz. Bunun yerine bunun gibi bir şey yapabilirsiniz:

HTML girişiniz için onkeydown kullanın:

<input name="yourInput" onkeydown="upperCaseF(this)"/>

JavaScript'inizde:

function upperCaseF(a){
    setTimeout(function(){
        a.value = a.value.toUpperCase();
    }, 1);
}

İle upperCaseF()her tuşa basma üzerinde aşağı fonksiyonu, girişin değeri büyük harf forma çevirmek için gidiyor.

Ayrıca 1 ms'lik bir gecikme ekledim, böylece işlev kodu bloğu, tuşa basma olayı gerçekleştikten sonra tetiklenir.


4
Bir kullanabilirsiniz olay yerine ve kurtulmak geçici çözüm. inputkeydownsetTimeout
Dinei

1
Bu işe yarıyor, ancak çirkin ikinci küçük harften büyük harfe atlamayı nasıl önleyebilirsiniz?
Jonathan Safa

7
"Giriş olayı" fikrini ele alırsak, inputöğeye bu niteliği eklemek işe yarıyor gibi görünüyor:oninput="this.value = this.value.toUpperCase()"
Tommy Stanton

3
text-transform:uppercase
@JonathanSafa

1
Bir kullanıcı mevcut metni düzenlediğinde ve imleci sondan başka bir yere koyduğunda, imleç her yazılan karakterle sona atlayacaktır. Metni büyük harfe dönüştürmenin yanı sıra imleç konumunu korumanın bir yolu var mı?
Mike Wodarczyk

17

İlk yanıtla ilgili sorun, yer tutucunun da büyük harf olacağıdır. YALNIZCA girdinin büyük harf olmasını istiyorsanız, aşağıdaki çözümü kullanın.

Yalnızca boş olmayan giriş öğesini seçmek için öğeye gerekli özniteliği girin:

<input type="text" id="name-input" placeholder="Enter symbol" required="required" />

Şimdi, onu seçmek için :validsözde öğeyi kullanın :

#name-input:valid { text-transform: uppercase; }

Bu şekilde yalnızca girilen karakterleri büyük harfle yazarsınız.


4
Bu cevap işe yaramıyor ve mantıklı değil. Bir seçim neden yalnızca giriş geçerliyse yer tutucuyu değil de giriş metnini etkiler? Sanırım boşluk geçerli bir değer değilse, bu şans eseri işe yarayabilir. Cevabı burada kullandım: stackoverflow.com/questions/25180140/…
Ben Thurley

6
Çözümüm yalnızca gerekli metin giriş alanları için harika çalışıyor. Genelleştirmeye çalışırsanız işe yaramaz. Yukarıdaki soruyu cevaplar. Muhtemelen farklı bir soru soruyorsunuz.
tomericco

Bu gerçekten kullanışlı bir çözüm ve tam da ihtiyacım olan şey. Gereken alana bağlı olduğu için her duruma uymaz, ancak alet kutusunda olması kesinlikle kullanışlıdır!
Tim Mackey

9

Deneyin

<input type="text" class="normal" 
       style="text-transform:uppercase" 
       name="Name" size="20" maxlength="20"> 
 <img src="../images/tickmark.gif" border="0"/>

Görüntü yerine girdi üzerine stil etiketi koyun çünkü görüntüye değil girdiye yazıyorsunuz


4
Ancak bu, yer tutucu metni de büyük harf yapar.
Kazım Zaidi

5

Tüm metin kutusunu büyük harfe ayarlamak için aşağıdaki stili ayarlayın

input {text-transform: uppercase;}

3

CSS Styling ile ilgili sorun, verileri değiştirmemesidir ve bir JS işlevine sahip olmak istemiyorsanız, deneyin ...

<input onkeyup="this.value = this.value.toUpperCase()" />

kendi başına, alanın anahtarlamadan yararlandığını göreceksiniz, bu nedenle bunu style='text-transform:uppercase'diğerlerinin önerdiği ile birleştirmek istenebilir .


2

CSS kullanmak text-transform: uppercasegerçek girdiyi değiştirmez, yalnızca görünümünü değiştirir. Giriş verilerini bir sunucuya gönderirseniz, yine de küçük harfe veya nasıl girerseniz girin. Girdi değerini gerçekten dönüştürmek için aşağıdaki gibi javascript kodu eklemeniz gerekir:

document.querySelector("input").addEventListener("input", function(event) {
  event.target.value = event.target.value.toLocaleUpperCase()
})
<input>

Burada değeri büyük harfe toLocaleUpperCase()dönüştürmek inputiçin kullanıyorum . Girdiklerinizi düzenlemeniz gerekene kadar sorunsuz çalışır, örneğin ABCXYZ girdiyseniz ve şimdi onu ABCLMNXYZ olarak değiştirmeye çalışırsanız, ABCLXYZMN olur çünkü her girişten sonra imleç sona atlar.

İmlecin bu atlamasının üstesinden gelmek için, fonksiyonumuzda aşağıdaki değişiklikleri yapmalıyız:

document.querySelector("input").addEventListener("input", function(event) {
  var input = event.target;
  var start = input.selectionStart;
  var end = input.selectionEnd;
  input.value = input.value.toLocaleUpperCase();
  input.setSelectionRange(start, end);
})
<input>

Artık her şey beklendiği gibi çalışıyor, ancak yavaş PC'niz varsa, yazarken küçük harften büyük harfe atlanan metni görebilirsiniz. Bu sizi rahatsız ediyorsa, şimdi CSS kullanma, input: {text-transform: uppercase;}CSS dosyasına uygulama zamanı ve her şey yoluna girecek.


1

Bu hem girişi büyük harfle gösterecek hem de giriş verilerini yazı yoluyla büyük harfle gönderecektir.

HTML

<input type="text" id="someInput">

JavaScript

var someInput = document.querySelector('#someInput');
someInput.addEventListener('input', function () {
    someInput.value = someInput.value.toUpperCase();
});

0

Kimsenin önermediği gibi:

CSS çözümünü küçük harfli yer tutucularla kullanmak istiyorsanız, yer tutucuları ayrı ayrı biçimlendirmeniz yeterlidir. IE uyumluluğu için 2 yer tutucu stilini bölün.

input {
    text-transform: uppercase;
}
input:-ms-input-placeholder {
    text-transform: none;
}
input::placeholder {
    text-transform: none;
}
The below input has lowercase characters, but all typed characters are CSS-uppercased :<br/>
<input type="text" placeholder="ex : ABC" />


0

Aşağıdaki çözümü deneyin, Bu, bir kullanıcı ilk dizindeki giriş alanında yalnızca boş alana girdiğinde de dikkat edecektir.

document.getElementById('capitalizeInput').addEventListener("keyup",   () => {
  var inputValue = document.getElementById('capitalizeInput')['value']; 
  if (inputValue[0] === ' ') {
      inputValue = '';
    } else if (inputValue) {
      inputValue = inputValue[0].toUpperCase() + inputValue.slice(1);
    }
document.getElementById('capitalizeInput')['value'] = inputValue;
});
<input type="text" id="capitalizeInput" autocomplete="off" />


-2
<script type="text/javascript">
    function upperCaseF(a){
    setTimeout(function(){
        a.value = a.value.toUpperCase();
    }, 1);
}
</script>

<input type="text" required="" name="partno" class="form-control" placeholder="Enter a Part No*" onkeydown="upperCaseF(this)">

4
Bu cevap, daha önce verilmiş olanlardan nasıl ayırt edilir?
Oğlak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.