• ベストアンサー

文字数を数える際に空白、改行をカウントしない方法

こんばんは。 ど素人なのですが、テキストエリアの文字数をカウント したいと思い、さまざまなサイトを参考に作成しましたが、 スペース等の空白と改行をどうしても文字数として カウントしているのしか見つけられませんでした。 純粋に文字数だけをカウントさせるにはどのように すればよいのでしょうか。ちなみにこんな感じになっています。 こちらもいろいろ過去ログを調べてみたのですが やはりわかりませんでしたので、どうか宜しくお願い致します。 <SCRIPT Language="JavaScript"> <!-- function Check() { Br=navigator.appName; Num=document.user.comment.value.length; if(Br=="Netscape") document.user.counter.value=Num/2; else if(Br=="Microsoft Internet Explorer") document.user.counter.value=Num; } //--> </SCRIPT> <CENTER><B><FONT SIZE="4" COLOR="tan" FACE="MS UI Gothic">入力フォーム</FONT></B><BR> </CENTER> <CENTER> <FORM name="user"> <TEXTAREA name="comment" wrap="physical" cols=100 rows=50>文字数をチェックして見て下さい。</TEXTAREA><P> <INPUT type="button" value="文字数チェック" onClick="Check()"> <INPUT type="text" name="counter" size=3 maxlength=3>字</P> </FORM> </CENTER>

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

  • ベストアンサー
noname#84373
noname#84373
回答No.5

<html> <body style="text-align:center"> <div style="font:bold 14pt 'MS UI Gothic'; color:tan"> 入力フォーム </div> <FORM name="user"> <TEXTAREA name="comment" wrap="physical" cols="100" rows="50" onKeyup=" o=document.getElementById('slen'); n=this.value.replace(/\s| /gm,'').length; o.value=n; o.innerHTML=n; o.style.color=(n>100)?'red':'tan'; document.getElementById('mes').innerHTML=(n>100)?'字 文字制限を越えました':'字'; document.getElementById('mes2').innerHTML=(n>100)?'':' あと、'+(100-n)+'文字です。'; "> 100文字以内で! </TEXTAREA><br/> <span id="slen" style="border:1px solid #9ab;width:3em"> </span> <span id="mes">字</span> <span id="mes2"></span> </FORM> </body> </html>

comomo0617
質問者

お礼

まさに求めていた通りの物が出来ました! ありがとうございます。 本当に助かりました。 皆様も沢山のご指導ありがとうございました。 この場を借りてお礼申し上げます。

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

その他の回答 (4)

  • auty
  • ベストアンサー率58% (284/486)
回答No.4

・ 文字コードを   charset=utf-8   で指定していますので、HTMLファイルを   utf-8   で保存するか、この部分を書き直してみてください。

全文を見る
すると、全ての回答が全文表示されます。
  • auty
  • ベストアンサー率58% (284/486)
回答No.3

・ スペース等の空白と改行を見つけるには、正規表現を利用します。 var ss2 = ss.replace(/\s/g,""); の場合、 /\s/ が、スペース等の空白と改行とマッチして、""に置き換えています。 以下のコードを参考にしてみてください。 ------------------------------------------------------------ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head> <script type="text/javascript"> function check(ta) { var ss = ta.value; var ss2 = ss.replace(/\s/g,""); alert(ss2.length); } </script> <head> <body> <h2>メッセージの値を変更してみてください。</h2> <form method="post"> <table border=1> <tr> <td>メールアドレス</td> <td><input type=text name=email size=20></td> </tr> <tr> <td>メッセージ</td> <td><textarea name=msg rows=5 cols=40 onchange="check(this)"></textarea></td> </tr> <tr> <td>お名前</td> <td><input type=text name=name size=20></td> </tr> </table> </form> </body> </html>

comomo0617
質問者

お礼

早速の回答ありがとうございます。 しかし、このソースで試してみたのですが、 文字化けの様になってしまい確認できませんでした。。 おそらく私が何か変な事をしているのでしょうが。 せっかく詳しく書いてくださったのに申し訳ありません。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • 15mm
  • ベストアンサー率65% (65/100)
回答No.2

document.user.counter.value.split(/\s/).join("") スペースや改行で文字列を区切り、連結することで、 純粋に文字だけの状態に加工した文字列を返してくれるはずです。 この文字数をお作りになったスクリプトでカウントしてあげればどうでしょう。 ちなみにこのままだと全角スペースには対応できてませんので、 正規表現の部分(/\s/)を適宜変えてください。  /\s| / など 好きな文字をカウントから外すことができます。 かなり無理やりなような気がしますができないことは無いでしょう。

comomo0617
質問者

お礼

すばやい回答ありがとうございます。 試してみたのですが、だめでした。。 やり方がよくわかってない為だと思います。 せっかく丁寧に教えてくださったのに申し訳ありません。。

全文を見る
すると、全ての回答が全文表示されます。
  • oka5130
  • ベストアンサー率66% (35/53)
回答No.1

ネスケには対応できませんが…。 var Num = 0; var ch; for( var i = 0; i < document.user.comment.value.length; i++ ) { ch = document.user.comment.value.charAt( i ); if( ch != ' ' && ch != '\n' ) { Num++; } } 動作確認していないので、ちゃんと動かなかったらすみません。

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

関連するQ&A

  • このバグの解消方法は?

    実行してみれば分かると思いますが,以下のコードは自分が製作した進数変換プログラムです。しかし,文字数が多いとバグが出てしまう事が発見されました。この問題を解決するには,どこをどのように修正すべきなのでしょうか。 <br><script type=text/javascript><!-- function convdh(){dd=eval(document.toHex.DecData.value);document.toHex.HexResult.value=dd.toString(36);} function convhd(){hh=eval(0x+document.toDec.HexData.value);document.toDec.DecResult.value=hh.toString(10);} function compute() {s = document.f3.type.selectedIndex; if(s==0) z = parseInt(document.f3.n1.value,36); document.f3.result.value = z;} //--></script><form name=toHex><textarea name=DecData>ここに入力された10進数は,</textarea><textarea name=HexResult>36進数化されてここに表示されます。</textarea><input type=button onclick=convdh() value=演算></form><br><br><form name=f3><textarea name=n1>ここに入力された36進数は,</textarea><textarea name=result>10進数化されてここに表示されます。</textarea><input type=button onclick=compute(); name=check value=演算><br><br><select name=type><option selected>&hearts;</option></select></form><br> ジャバスクリプトは初心者です。お願いします!

  • Textareaの入力文字数チェックについて(タグ無視)

    TEXTAREAの文字数チェックまではできるのですが しかし、今回はHTMLのタグも入力されます。 タグを無視した文字数もカウントをやりたいです。 PHPにはそのような関数があったような気がしますが ... JavaScriptではどのようにすれば実現できるのでしょうか? タグの文法エラーはない前提でよいです。 よろしくお願いします。 <html> <head> <title>入力文字数のチェック</title> <script language="JavaScript"> function check() { txt = document.form1.sample.value; n = txt.length; if (n > 100) alert("100文字以内にしてください"); } </script> </head> <body> <form name="form1"> <textarea rows="10" name="sample" onChange="check()" cols="20"></textarea> </form> </body> </html>

  • textareaに文字列を追加する方法

    JavaScript超初心者です。初めて質問します。 2つのテキストエリアに入力されたものを、3つ目のテキストエリアに文字を追加して、入力するスクリプトを作ろうとしています。 ネットで似たようなものを見つけてきて、アレンジしてみたのですが、2つ目の文字を入力するためのボタンをクリックすると、1つ目の文字が消えてしまいます。 姓:AAA/名:BBB と続けて追加されるようにするには、どうしたらよいのでしょうか? どなたかお助けください。よろしくお願いいたします。 <作成中のページ> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <title></title> <script language="JavaScript"><!-- function setData() { txt1= document.form7.t1.value; document.form7.list.value = "姓:"+ txt1; } function setData1() { txt2= document.form7.t2.value; document.form7.list.value = "名:"+ txt2; } // --></script> </head> <body> <form name="form7"> 姓<TEXTAREA name="t1" size="10" rows="1"></TEXTAREA><input type="button" value="済" onClick=setData()><br> 名<TEXTAREA name="t2" size="10" rows="1"></TEXTAREA><input type="button" value="済" onClick=setData1()><br> <textarea rows="9" cols="20" name="list"></textarea><br> </form> </body> </html>

  • 入力文字のバイト数

    いつも参考にしております。 入力文字のバイト数のカウントについて質問をさせていただきます。 入力フォームなどで、入力文字数の制限をしたいと考えております。 文字を入力するたびに、バイト数がテキストボックスに常に 表示されるようにしたいと考えております。 以下を参考にできるのではないとか思っておりますが。 <script language="javascript"> <!-- function check() {  txt = document.myFORM.myTEXT.value;  n = txt.length;  if (n > 10) alert("10文字以内にしてください"); } --> </script> <form name="myFORM"> <textarea rows="3" name="myTEXT" onChange="check()"></textarea> </form> ご教授お願いいたします。

  • javascriptでフォームの値の計算

    javascript1か月目の初心者です。 7つのテキストフィールドに数値を代入させて合計と平均(最後には標準偏差)を計算しようと思ってます。 以下のように考えましたが、うまくいきません。 strが文字列として?扱われてしまっているようです。 strをevalで囲んでみてもダメです。 詳しい方教えてください。 <!--スクリプト1--> <SCRIPT LANGUAGE="JavaScript"> <!-- function f_check() { if(document.F1.num1.value!=""&&document.F1.num2.value!=""&&document.F1.num3.value!=""&&document.F1.num4.value!=""&&document.F1.num5.value!="" &&document.F1.num6.value!=""&&document.F1.num7.value!=""){ str=0 for(var i = 0;i<document.F1.length;i++){ str+=document.F1[i].value; } alert('合計は'+str+"です"); avrg = (str)/document.F1.length; alert('平均は'+avrg+'です'); //ここから標準偏差の計算(略)。 } // --> </SCRIPT> <form method="post" name="F1" onSubmit="return f_check()"> 数値を入れてください<input type="text" name="num1" size="5"><br> 数値を入れてください<input type="text" name="num2" size="5"><br> 数値を入れてください<input type="text" name="num3" size="5"><br> 数値を入れてください<input type="text" name="num4" size="5"><br> 数値を入れてください<input type="text" name="num5" size="5"><br> 数値を入れてください<input type="text" name="num6" size="5"><br> 数値を入れてください<input type="text" name="num7" size="5"><br> <INPUT TYPE=SUBMIT VALUE="平均をとる"></FORM>

  • textbox内の文字数を判別しfocusを移動させる

    textbox内の文字数を判別しfocusを移動させるプログラムを書いたのですが、2つ目のtextboxから記入したりするとうまく動作しません。どうしたらいいのでしょうか?カーソルがどのtextboxにあるか(どのtextboxにfocusしているか)を参照しようとしたのですがそのような関数はあるのでしょうか?教えてください。 <html> <head><title>checkLength</title> <script language="JavaScript"> <!-- document.onkeyup=checkLength; function checkLength() { if(document.form1.text1.value.length==3) document.form1.text2.focus(); if(document.form1.text2.value.length==5) document.form1.text3.focus(); } //--> </script> </head> <body bgcolor="#ffffff"> <form name="form1">半角英数で入力してください。<br> 1...<input type="text" name="text1" size="7"> 3文字入力するとカーソル移動<br> 2...<input type="text" name="text2" size="7"> 5文字入力するとカーソル移動<br> 3...<input type="text" name="text3" size="7"> </form> </body> </html>

  • 全角の縦書きが一定文字数で改行になる。

    こんにちは、 下のプログラムで全角の文字を入力し、縦書きにすると10文字で改行されます。横書きや半角の縦書きでは改行されないようです。 全角の縦書きで改行されないようにするにはどうすればいいでしょうか? 宜しくお願いいたします。 IE7で試しています。 <HTML> <HEAD> <STYLE type="text/css"> <!-- INPUT {font-size: 12px;} --> </STYLE> <SCRIPT language="JavaScript"> <!-- function check(){ var strName; strName = document.nform.textN.value; var test = document.getElementById("test"); test.innerHTML = strName; var tb = document.nform.tbSelect; test.style.writingMode = tb.options[tb.selectedIndex].value; } //--> </SCRIPT> </HEAD> <BODY> <FORM name="nform" > <SELECT name="tbSelect"> <OPTION value="tb-rl">縦書き</OPTION> <OPTION value="lr-tb" selected>横書き</OPTION> </SELECT><BR><BR><br> <INPUT type="text" size="45" name="textN"><BR> <input type="button" value=" 確認 " onClick="check()"> </FORM> <DIV id="test" style="writing-mode:tb-rl;position:absolute;font-size:24px;font-family: Verdana, sans-serif;cursor:hand"> </DIV> </BODY> </HTML> </html>

  • Javascriptで複数のテキストエリアの文字列を連結させたいです

    Javascriptで複数のテキストエリアの文字列を連結させたいです。 初めまして、 お世話になります。 ------------------------------------------------- <html> <head> <title>無題ドキュメント</title> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> </head> <body bgcolor="#FFFFFF" text="#000000"> <form name="form1" method="post" action=""> いつ<br> <textarea name="when"></textarea> <br> <br> どこで<br> <textarea name="where"></textarea> <br> <br> だれが<br> <textarea name="who"></textarea> <br> <br> どうした<br> <textarea name="what"></textarea> <br> <input type="submit" name="submit" value="連結"> <input type="reset" name="submit" value="リセット"> <br> <br> いつどこでだれががどうした。<br> <textarea name="textfield"></textarea> </form> </body> </html> ------------------------------------------------- というHTMLがあったとして ボタンを押したら文字列を連結させたいのです。 その際、入力したテキストフィールドで文字列が改行をされてあった場合 それをそのまま反映して表示させたいのです。 ぜひよろしくお願いします。

  • 記述方法を教えてください

    以下のコードをテキストエディタにコピーしindex.htmlというファイル名で保存し起動してみてください。HTMLで,10進数を36進数化するプログラムを記述したのですが,この逆の処理をさせるのがうまくいかないのでどう記述すればできるのか教えていただけないでしょうか。 <br><script type=text/javascript><!-- function convdh(){dd=eval(document.toHex.DecData.value);document.toHex.HexResult.value=dd.toString(36);} function convhd(){hh=eval(0x+document.toDec.HexData.value);document.toDec.DecResult.value=hh.toString(10);} //--></script><form name=toHex><textarea name=DecData>ここに入力された10進数が,</textarea><textarea name=HexResult>36進数化されてここに表示されます。</textarea><br><input type=button onclick=convdh() value=演&hearts;算></form><br> お願いします!

  • textareaで入力した文字を改行したままで表示したいのですが。

    textareaに複数行で入力した文字を改行したままで表示したいのですが 改行されずに表示されます。 改行したままで表示するのはどうすればいいでしょうか? <HTML> <HEAD> <STYLE type="text/css"> <!-- INPUT {font-size: 12px;} --> </STYLE> <SCRIPT language="JavaScript"> <!-- function check(){ var strName; strName = document.nform.textN.value; var test = document.getElementById("test"); test.innerHTML = strName; } //--> </SCRIPT> </HEAD> <BODY> <FORM name="nform" > <textarea cols="30" rows="10" name="textN"></textarea> <input type="button" value=" 確認 " onClick="check()"> </FORM> <DIV id="test" style="position:absolute;font-size:24px;"> </DIV> </BODY> </HTML>

    • ベストアンサー
    • HTML
このQ&Aのポイント
  • 部署違いの仲良い同僚との業務時間内の長時間のコミュニケーションに不安を感じていました。
  • 相談してラインなど別の手段でコミュニケーションを取ることに合意したが、実際には無視され、会社に報告されてしまった。
  • 他の人に相談したところ、関わらないほうがいいとの意見が多かったが、自分が間違っているのか不安に思っています。
回答を見る

専門家に質問してみよう