• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ジャバスクリプトについて質問です。)

ジャバスクリプトでテキストエリアに入力した文字数を表示する方法

このQ&Aのポイント
  • ジャバスクリプトでテキストエリアに入力した文字数を表示する方法について紹介します。テキストエリアの入力を監視し、文字列の長さを取得して表示する方法です。
  • 上記のHTMLコードでは、テキストエリアの入力イベントを監視し、入力された文字列の長さを取得して、文字数を表示しています。
  • 全角も半角も1文字としてカウントする設定ではなく、半角1文字、全角2文字としてカウントする方法については、JavaScriptのcharCodeAtメソッドを使用して文字列をUnicodeで解析し、文字列の長さを計算する必要があります。具体的な実装方法については、コード例を参考にしてください。

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

  • ベストアンサー
回答No.3

> これを半角一文字、全角二文字という風に設定したいのですがどうすればいいのでしょうか? JavaScriptで扱っている文字はUTF-8ですが、UTF-8における「半角カナ」は、1バイトではなく3バイトですので、 fromCharCodeAt()で1文字ずつ文字コードを取得して、 半角文字に含まれる文字コードなら「半角1文字」、それ以外なら「全角1文字」として数えるしかないと思います。 改行やスペースなどの「表示されない文字」は一般的には0文字ですが、 データとして入っていますので、それを1文字とするか0文字とするかも、文字コードから確認するしかないと思います。 This is a pen. -> 11文字? 14文字? <script charset="Shift_JIS" src="test.js">という指定が、HTML、JavaScriptの文法上は可能ですが、 殆どのブラウザが、charsetが未実装のようで、"ア".charCodeAt(0)はShift_JISの0xB1になりません。 *BBSの仕様上、投稿時に半角カナが全角に変換されるようです

その他の回答 (3)

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.4

function tyek( str ) { var hc = str.match( /[\u0009\u000B\u0020-\u007E\uFF61-\uFF9F]/g ) || []; var rc = str.match( /(:?\u000D|\u000A|\u000D\u000A)/g ) || []; document.getElementById( 'inputlength' ).innerHTML = ( str.length - rc.length ) * 2 - hc.length + '文字'; }

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

テキストエリアで処理する場合は改行文字なども注意が必要 また、3バイト文字などもあるので「バイト数」ではないですし 文字数でもないので、なんというべきかは微妙ですね

noname#84373
noname#84373
回答No.1

関連するQ&A