• ベストアンサー

テキストエリアで文字数が200になったら警告

テキストエリアで文字数が200になったら警告するようなことができますか? (例) テキストエリアに文字を入れていって、201文字目に入ったらぽっぷアップで「これ以上入力できません」とお知らせ。

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

Webコンテンツを作成しています。  ユーザの入力をJavaScriptによって細かくチェックしたいという気持ちは分かりますが、あんまりしつこくやるとユーザに嫌われます。  各入力フィールドごとに制限事項を小さい字で補足しておき、送信ボタン押下時のみチェックしてalertする程度が1番いいようです。  もう少しやるにしても、onBlurのみのチェックにしておいた方がいいですよ。  JavaScriptの練習がしたいというのであれば、387さんの回答を試してみるとよいと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • 387
  • ベストアンサー率66% (40/60)
回答No.1

以下のようにすると良いのではないでしょうか? ※ 動作確認しやすいように 5文字でチェックしています。  ポイントは、テキストエリアに入力する手段として、キー入力と「貼り付け」の 2種類がある事です。  それと、キー入力時には事前にチェックができますが、「貼り付け」時には テキストエリアがフォーカスを失う(別の要素に移動する)時しかチェック できない為、データが既に文字数制限をオーバーしている可能性がある点です。  その為、最後に文字数制限内だったデータを保持する処理と制限オーバーした 時に保持しているデータに復元する処理を行っています。 ※ データの一部を書き換える(文字列を選択してからキー入力 or「貼り付け」)  場合の処理も必要ですが、今回は割愛しています。 ●スクリプト var strTextarea = "" ;  // テキストエリアデータの保存用 function funcCheckOnChange( oTextarea ) {  if ( oTextarea.value.length > 5 )  {   alert( "文字数は 5文字迄です。" ) ;   oTextarea.value = strTextarea ; // データを復元  }  else  {   strTextarea = oTextarea.value ; // データを保存  } } function funcCheckOnKeypress( oTextarea ) {  if ( oTextarea.value.length >= 5 )  {   alert( "文字数は 5文字迄です。" ) ;   if ( oTextarea.value.length > 5 )   {    oTextarea.value = strTextarea ; // データを復元   }   event.returnValue = false ; // キー入力をキャンセル  } } ●テキストエリア <TEXTAREA  onKeypress="funcCheckOnKeypress( this ); strTextarea = this.value"  onChange="funcCheckOnChange( this )"> </TEXTAREA> ※ IEでのみ動作確認しています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テキストエリアの文字数を数えたい

    Java初学者です。簡単な本をやり終えたので、ちょっと自分の役に立つ ものを作ってみようということになりました。 そこでレポート作成の際に使えそうな、 文字数、行数をカウントできるアプリケーションを作ることにしました。 具体的には、フレームは縦に2分割され、左側にボタン、右側がテキストエリアとなっています。 ボタンとは[文字数を数える][行数を数える][貼り付け]などのボタンです。 ボタンの下にその結果を表示するラベルも用意します。 貼り付けなどは既に用意されているpasteメソッドなどを使えば済む話ですが 肝心の文字数をカウントするのをどう実現するかで悩んでいます。 そもそも、テキストエリア内にある文字列?を直接扱う術が分かりません。 このままでは既に用意されている関数以外の操作は出来ないことになってしまいます。 テキストエリアないの文章をString型の変数に入れる、とかは出来ないんでしょうか。 幼稚な質問かもしれませんが、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • テキストエリアにあわせた文字サイズ変更

    Javascript自体うまく動かすことができず、 サンプルを探しても見つからず、困っております。 やりたいことは、 Aのテキストエリアに入力した文字を「OK」ボタンクリックと同時に Bという別のテキストエリア(エリアの枠は固定)にリサイズ表示させたいと思います。 テキストエリア自体を文字数により大きくするサンプルはありましたが その逆のテキストエリアのサイズに文字をあわせるものが見つかりません。 申し訳ありませんが、おしえていただけますでしょうか。

  • テキストエリアの文字制限をはずしたい。

    メールフォームにてテキストエリアに文字制限を外したいです。 kent-webを流用しています。 テキストエリアに文字数の制限があるようなのではずしたいのですがいかんせん、どこをいじればよいのかわかりません。 よろしくおねがいします。

    • ベストアンサー
    • CGI
  • フォームテキストエリアの文字制限について

    ** どなたか分かる方、教えてください。 フォームのテキストエリア(複数行の)で、 1.入力できる文字数を制限したい(200文字とか) 2.テキストエリアの右側に出てくるスクロールバーを消したい ・・・のですが、出来そうなのに、私にはできません。 cgiは使えない環境です。 あとはどんな方法もOKです。 何か方法がありますか? --------- くろぶた

  • テキストエリアの行文字数の固定について

    現在、HTMLを作成しているのですが、 画面で入力した情報を取得して、 PDFに反映させるといったことをしています。 そこで、テキストエリアに入力したままを PDFに出力する箇所があるのですが、 テキストエリアのcolsで指定したバイト数よりも 全角文字が多く入ってしまうので、 PDFと画面で若干ずれが生じています。 現在はcols88でフォントはMSゴシックを指定しています。 この場合ですと、1バイト文字()は88バイト(88文字)入るのですが、 2バイト文字(全角文字)だと94バイト(47文字) 入ってしまいます。 フォントはゴシックとほぼ同じ種類だったら 問題ないので、フォントで対応できる場合も ご教授ください。 又、この問題はどうしようもない問題とご存知でしたら、 そちらもご教授ください。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • テキストエリアの長さ(表示文字数)が違う?

    ジャンルを迷ったのですが... CGIを改造中です。テキストエリアを利用してスクロールする長文を表示させようとしています。 もちろんですが、管理画面(入力画面)もテキストエリアです。 ここでものすごく変な事が起きています。 表示画面では、<TEXTAREA rows="19" cols="23">と表示してあり、全角11文字・半角22文字で折り返しています。 管理画面では、<TEXTAREA cols="19" rows="10" name="com1">と表示してあり、全角11文字・"半角16文字"で折り返しています。 なんでこんな差が出るのでしょうか? ちなみに、ヘッダー部分はサブルーチンを使ってどちらも同じですし、スタイルシートももちろん一緒です。

  • テキストエリアでの処理に関して

    あるテキストエリアの中で、OnDbclickイベントでダブルクリック した場合にサブウィンドウを開き、サブウィンドウの中であるDBから 情報を取得し、親ウィンドウの隣のテキストエリアに値を表示するような事をしていますが、ダブルクリック以外でもそのテキストエリアに入力があったらDBを検索するような仕組みを考えています。 基本的には文字数制限をし、6文字入力された時点でDBへ検索しに 行くような形にしたいと考えています。 そもそも同じテキストエリアでダブルクリックはサブウィンドウ、 入力後は他の処理というような事が可能なのでしょうか。。。 どういった記述をすれば良いか教えて下さい。 よろしくお願いします。

  • テキストエリア入力文字数の表示で全角と半角を区別したいです。

    JavaScriptで以下のようにテキストエリアで入力文字数を表示させているのですが、 全角文字も半角文字も同じ1文字としてカウントされてしまいます。 入力された文字が全角なら2、半角なら1としてカウントするように出来ないでしょうか? ================================================================ /*テキスト入力フォームで文字数を表示する*/ function ShowLength( str ) { document.getElementById("inputlength").innerHTML = str.length + "文字"; } ---------------------------------------------------------------- <textarea cols="70" rows="10" onkeyup="ShowLength(value);" /></textarea> <p id="inputlength">0文字</p> ================================================================ 宜しくお願い致します。

  • あらかじめ入力されたテキストエリア内のバイト数表示

    以下のようなスクリプトで、テキストエリアに入力された文字のバイト数をカウントしているのですが、 あらかじめテキストエリアに文字が入力されてる場合に「0文字」と表示されます。 ページを開いたとき、あらかじめテキストエリアに文字が入力されてる場合に、そのバイト数を 表示させる方法はあるでしょうか。 もし、おわかりになる方がおられましたら、ご教示いただければ幸いです。 function ShowLength( str ) { len = 0; for(i=0;i<str.length;i++) { var c = str.charCodeAt(i); if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)){ len += 1; } else { len += 2; } } document.getElementById("inputlength").innerHTML = len + "文字"; } <textarea onkeyup="ShowLength(this.value);"></textarea> ちなみに、onload="ShowLength(this.value);"では上手くいきませんでした。 宜しくお願い申し上げます。

  • javaScriptで、テキストエリアのある文字列を見つけて、

    javaScriptで、テキストエリアのある文字列を見つけて、 その行から、1行目と2行目を消すという処理を行いたいのですが、 コーディングがわかりません。 教えて下さい。 (例) 下記のテキストエリアから、「<ターゲット文字列>」を見つけて、 その行から1行目と2行目、つまりは、「さしすせそ」と「たちつてと」を削除したいです。 -----textarea----- あいうえお かきくけこ <ターゲット文字列> さしすせそ たちつてと

このQ&Aのポイント
  • スーパーセキュリティーに変えてから、EdgeやChrome共に、特定のサイトに接続できません。
  • 問題のあるサイトは、表示までの時間が長くなり、エラーメッセージが表示されます。
  • PCの仕様やルーターの再起動を試しましたが、問題は解決しません。どのようにすればよいですか?
回答を見る

専門家に質問してみよう