テキストボックスを自動的に大文字にするにはどうすればよいですか。


131

次のスタイル属性を使用してユーザー入力を大文字に設定しているため、たとえばユーザーがテキストボックスに入力し始めると 、Caps-lockボタンを押さなくてもrailway大文字に変更されRAILWAYます。

これは私が入力に使用しているコードです:

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

しかし、この属性を使用しても目的の出力が得られません。


2
以下で説明するように、=と値 "text"の間にスペースがあることに注意してください
Jonathan Safa

回答:


259

style属性をの<img>代わりにタグに配置しました<input>

また、属性名と値の間にスペースを入れることはお勧めできません...

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

この変換は純粋に視覚的であり、POSTで送信されるテキストを変更しないことに注意してください。


67
このデータをPOST経由で送信すると、画面に表示される方法ではなく、入力した方法で送信されます。
Vincent Poirier、2015

@freefaller、それはすべての入力を大文字に変更しましたが、mysqlへの挿入は小文字のテキストです。大文字を変更する方法!
David Jaw Hpan 2015

6
@David、前のコメントを参照してください。変換は純粋に視覚的です。サーバーに送り返される基になるテキストの大文字と小文字は変更されません。テキストを大文字で保存したい場合は、保存する前にサーバーで変換する必要があります
freefaller '11 / 11/15

7
プレースホルダーが大文字になっているため、これは完全なソリューションではありません(ほとんどの場合大文字にするべきではありません)。JavaScriptを使用する以外に方法はありません。
tomericco 2016年

1
純粋に視覚的なものではなく価値に変更を加えることを望む将来の読者は、Burak Tokakの回答を参照してください。
Dinei

57

大文字でポストされることを保証する最も堅牢なソリューションは、oninputメソッドをインラインで使用することです。

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

編集

一部の人々は、値を編集するときにカーソルが最後にジャンプすると不平を言っているので、この少し拡張されたバージョンはそれを解決するはず

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


36

text-transformation:uppercaseスタイリングでの回答は、送信時に大文字のデータをサーバーに送信しません。代わりに次のようなことができます:

入力HTMLには、onkeydownを使用します。

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

あなたのJavaScriptで:

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

upperCaseF()すべてのキーが押されるたびにfunctionを使用すると、入力の値は大文字の形式に変わります。

また、1msの遅延を追加して、キーダウンイベントの発生後にファンクションコードブロックがトリガーされるようにしました。


4
代わりにイベントを使用しinputkeydownsetTimeout回避策を取り除くことができます。
Dinei

1
これは機能しますが、2番目の小文字から大文字への醜い分割をどうやって回避しますか?
Jonathan Safa 2017

7
「入力イベント」のアイデアに沿って、input要素にこの属性を追加するとうまくいくようです:oninput="this.value = this.value.toUpperCase()"
Tommy Stanton

3
@JonathanSafa text-transform:uppercase上記のCSSスタイルソリューションに加えてこれを使用して、入力が常に大文字で表示されるようにします
miknik

1
ユーザーが既存のテキストを編集し、カーソルを末尾以外の場所に置くと、カーソルは入力されたすべての文字で末尾にジャンプします。カーソルの位置を保持し、テキストを大文字に変換する方法はありますか?
Mike Wodarczyk 2018

17

最初の答えの問題は、プレースホルダーも大文字になることです。入力のみを大文字にしたい場合は、次の解決策を使用してください。

空でない入力要素のみを選択するには、要素に必須属性を配置します。

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

次に、それを選択するために、:valid疑似要素を使用します。

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

このようにして、入力した文字のみを大文字にします。


4
この答えは機能せず、意味もありません。入力が有効な場合にのみ選択を行うと、プレースホルダーではなく入力テキストに影響するのはなぜですか?空白が有効な値ではなかったとしたら、これは偶然に機能するかもしれません。私はここで答えを使用:stackoverflow.com/questions/25180140/...
ベンThurley

6
私のソリューションは、必要なテキスト入力フィールドに対してのみ機能します。一般化しようとしてもうまくいきません。上記の質問に答えます。あなたはおそらく別の質問をしているでしょう。
tomericco

これは本当に便利なソリューションであり、まさに私が必要としたものです。必要なフィールドに依存するため、すべての状況に適合するわけではありませんが、ツールボックスに入れると間違いなく便利です。
Tim Mackey、2018年

9

試す

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

画像ではなく入力にスタイルタグを入力する


4
ただし、この場合、プレースホルダーテキストも大文字になります。
Kazim Zaidi 2016

5

次のスタイルを設定して、すべてのテキストボックスを大文字に設定します

input {text-transform: uppercase;}

3

CSSスタイリングの問題は、データが変更されないことです。JS関数を使用したくない場合は、試してください...

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

それ自体は、キーアップを利用してフィールドを見るので、これをstyle='text-transform:uppercase'他の人が提案したものと組み合わせることが望ましいかもしれません。


2

CSSを使用text-transform: uppercaseしても、実際の入力は変更されませんが、外観が変更されるだけです。入力データをサーバーに送信した場合でも、小文字のままか、ユーザーが入力したものになります。入力値を実際に変換するには、以下のようにJavaScriptコードを追加する必要があります。

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

ここではtoLocaleUpperCase()input値を大文字に変換するために使用しています。入力した内容を編集する必要があるまで、正常に機能します。たとえば、ABCXYZを入力していて、それをABCLMNXYZに変更しようとすると、入力ごとにカーソルが最後にジャンプするため、ABCLXYZMNになります。

このカーソルのジャンプを克服するには、関数を次のように変更する必要があります。

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>

これですべてが期待どおりに機能しますが、遅いPCを使用している場合、入力時にテキストが小文字から大文字にジャンプすることがあります。これがあなたを困らせたなら、今こそCSSを使う時であり、input: {text-transform: uppercase;}CSSファイルに適用し、すべてがうまくいくでしょう。


1

これにより、入力は大文字で表示され、入力データはポストを介して大文字で送信されます。

HTML

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

JavaScript

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

0

誰もそれを示唆していないように:

小文字のプレースホルダーでCSSソリューションを使用する場合は、プレースホルダーのスタイルを個別に設定する必要があります。IE互換性のために2つのプレースホルダースタイルを分割します。

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

以下の解決策を試してください。これは、ユーザーが最初のインデックスの入力フィールドに空白スペースのみを入力した場合にも対応します。

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
この答えは、すでに与えられたすべてのものとどのように区別されますか?
山羊座
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.