2

で大文字に変わる入力が欲しいkeyupです。だから私は簡単なイベントを添付しkeyupます。

HTML

<input id="test"/>

Javascript (jQuery を使用)

$("#test").keyup(function(){
  this.value = this.value.toUpperCase();
});

しかし、Chrome と IE では、左矢印を押すと、カーソルが自動的に末尾に移動することがわかりました。入力が文字のみかどうかを検出する必要があることに気付きました。検出にはキーコード範囲または正規表現を使用する必要がありますか?

例: http://jsbin.com/omope3

4

7 に答える 7

5

または、次を使用できます (これはおそらくより高速でエレガントです)。

<input style="text-transform: uppercase" type='text'></input>

ただし、これは入力されたとおりの値をフォーム データに送り返すため、次のいずれかを使用してすべて大文字でデータベースに格納します。

MySQL:UPPER(str)

PHP:strtoupper()

于 2010-01-09T08:05:50.037 に答える
3

text-transform: uppercase; を使用する場合の別の解決策。css プロパティ:

<input id='test' style='text-transform: uppercase;' type='text'></input>

そして、jQuery のヘルプを使用して、 blur イベントを選択します。

$("#test").blur(function(){
  this.value = this.value.toUpperCase();
});

このソリューションでは、データベース フィールドの上に移動する必要はなく、移動にカーソルを使用でき、ユーザーは入力フィールドにテキストを挿入/書き換えることができます。

于 2010-10-13T15:05:01.843 に答える
2

これを使って:

<input onkeyup="MakeMeUpper(this)" type="text"/>

そしてあなたのJSコード部分に以下を入れてください:

function MakeMeUpper(f, e){ 
  var actualValue = f.value;        
  var upperValue = f.value.toUpperCase();
  if( actValue != upperValue){
    f.value = upperValue;       
  }   
}

ユーザーがテキスト以外の何か (左矢印または右矢印) を入力した場合、このコードはテキストを変更しません。

于 2012-01-23T20:41:35.247 に答える
1

ええ、一部のブラウザーは、値が更新されるとカーソルを最後に移動するようです。あなたはこれを行うことができます:

$("#test").keyup(function(){
  var upper = this.value.toUpperCase();
  if (this.value != upper) 
      this.value = upper;
});

変更する必要がある場合にのみ値を変更します。ただし、入力してabd左に移動し、ヒットcして取得するabcdと、カーソルが最後に移動するという問題が残ります。

于 2010-01-09T06:40:53.310 に答える
0
var str = $(this).val();
if (evt.keyCode != 37 && evt.keyCode != 39)
{
    str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
        return letter.toUpperCase();
    });
    $(this).val(str);
}
于 2015-03-03T07:28:21.013 に答える
0

Javascript (jQuery を使用)

$("#test").keyup(function(){
  $(this).val($(this).val().toUpperCase());
});
于 2012-01-12T08:15:01.687 に答える
-2

おそらく、keyup 関数で keyCode を見たいと思うでしょう。

var UP_ARROW = 38,
    DOWN_ARROW = 40;

$('#test').keyup(function(evt){
    if (evt.keyCode == UP_ARROW)
    {
        this.value = this.value.toUpperCase();
    }

    if (evt.keyCode == DOWN_ARROW)
    {
        this.value = this.value.toLowerCase();
    }
});
于 2010-01-09T06:13:39.623 に答える