• ベストアンサー

英数のみ半角にしたい

お世話になっております。 現在JavaScriptとPHPを使用しております。 そこでテキストエリアに入力された英数部分のみをリアルタイムで半角にしたのですが、それは可能なのでしょうか? S と入力されたら S と表示したいです。 1 と入力された場合は 1 と表示させたいです。 あいうえお などの入力はそのままの表示で。 こういった表示の仕方をしたいのですが、 検討が着かないので、なにとぞご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

>リアルタイムで どの程度のことか不明ですが、テキストエリアからフォーカスが離れた 時とかが一般的ではないでしょうか。 <TEXTAREA ONBLUR="toHalf(this)"> 変換関数は以下の通り function toHalf(area) {   var txt = area.value; //テキストエリアの内容を変数に受け取る   txt = conv(txt,0xFF10,0xFF19); //全角数字の変換   txt = conv(txt,0xFF21,0xFF3A); //全角英大文字の変換   txt = conv(txt,0xFF41,0xFF5A); //全角英小文字の変換   area.value = txt; //変換した内容をテキストエリアに戻す } function conv(txt,min,max) { //元の文字列,最小値,最大値   for ( ; min <= max ; min++ ) {     var zen = String.fromCharCode(min); //全角文字     var han = String.fromCharCode(min - 0xFEE0); //半角文字     txt = txt.replace(zen,han); //全角を半角で置換   }   return txt; //変換結果を返す } 急いだので、一例です。もっと上手い手があるかも知れません。

978
質問者

お礼

さっそくの返答ありがとうございます。 教えていただいたコードを参考に数行足して書いたところ理想の結果が返ってきました。 本当にありがとうございます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

文字コードの確定ができないと、結構処理が煩雑になりそうですね。 処理としてはonkeyupやonkeydownをつかうとすんなりいけるかと。

関連するQ&A

専門家に質問してみよう