質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

3565閲覧

jQueryでテキストエリアの文字数カウントが上手くいきません

schwarzewald

総合スコア18

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2015/06/27 13:26

編集2015/06/27 14:51

jQueryを使ってテキストエリアに入力した文字のカウントダウンを行う処理をしているのですが、何故か目標のテキストエリアとは別にもう一つあるテキストエリアの文字列をカウントしてしまいます。

lang

1<textarea name="description" class="form-control col-sm-7" rows="2" id="description"></textarea> 2 3<span class="count help-block text-right"></span> 4 5<textarea name="contents" class="form-control col-sm-7" rows="10" id="contents"></textarea>

lang

1<!--http://black-flag.net/jquery/20120229-3696.html--> 2<script src="http://code.jquery.com/jquery.min.js"></script> 3<script type="text/javascript"> 4$(function(){ 5 var countMax = 50000; 6 $('#contents').bind('keypress change',function(){ 7 var thisValueLength = $(this).val().length; 8 var countDown = (countMax)-(thisValueLength); 9 $('.count').html(countDown); 10 11 if(countDown < 0){ 12 $('.count').css({color:'#ff0000',fontWeight:'bold'}); 13 } else { 14 $('.count').css({color:'#000000',fontWeight:'normal'}); 15 } 16 }); 17 $(window).load(function(){ 18 $('.count').html(countMax); 19 }); 20}); 21</script> 22

上記のコードのうち、id="contents"のテキストエリアに入力された文字数のカウントダウンを<span class="count help-block text-right"></span>で表示するようにしているのですが、スマートフォンから実行した時に限り、id="description"のテキストエリアに文字を入力するとその文字数カウントが反映されてしまいます。

その後contentsのテキストエリアで文字を入力し始めたらその文字数がカウントされるのですが、その後更にdescriptionのテキストエリアで入力するとまたdescriptionの文字数がカウントされてしまいます。

スマートフォンからもcontentsのテキストエリアの文字数だけをカウントするにはどうしたらいいのでしょうか?

追記:上記のコードでは問題が再現されないようなので、実際に問題が発生しているページのurlを記載します。
http://privatter.net/post/ です
(Twitterアカウントを使用したログインが必要になっております)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

おそらく $('#contents').bind の bind が良くないのだと思います。
$('#contents').on にしてみるといいかもしれません。

投稿2015/06/27 14:34

編集2015/06/27 14:38
takutok

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こんにちは。

解決策にはなっていないのですが、いちおう検証してみたので、回答します。

問題になっている不具合を再現しようと思いまして、ご質問にあるJavascriptと
HTMLとを組みあわせて、以下のようなHTMLファイル q11888.html を作成
しました。

lang

1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>Q11888</title> 6<script src="http://code.jquery.com/jquery.min.js"></script> 7<script type="text/javascript"> 8$(function(){ 9 var countMax = 50000; 10 $('#contents').bind('keypress change',function(){ 11 var thisValueLength = $(this).val().length; 12 var countDown = (countMax)-(thisValueLength); 13 $('.count').html(countDown); 14 15 if(countDown < 0){ 16 $('.count').css({color:'#ff0000',fontWeight:'bold'}); 17 } else { 18 $('.count').css({color:'#000000',fontWeight:'normal'}); 19 } 20 }); 21 $(window).load(function(){ 22 $('.count').html(countMax); 23 }); 24}); 25</script> 26</head> 27<body> 28<textarea name="description" class="form-control col-sm-7" rows="2" id="description"></textarea> 29 30<span class="count help-block text-right"></span> 31 32<textarea name="contents" class="form-control col-sm-7" rows="10" id="contents"></textarea> 33</body> 34</html>

次に、作成した q11888.html をWEBサーバーに上げてみました。
URLは以下です。

http://www.gattolibero.sakura.ne.jp/teratail/q11888.html

上記のURLに自分の使っているスマホ(AU LGL22)の
Chromeからアクセスしてみましたが、

id="description"のテキストエリアに文字を入力するとその文字数カウントが反映されてしまいます。

にはなりませんでした。

しばらく、上記のURLにq11888.htmlは上げたままにしておきますが、
お手元のスマホから上記のURLを表示させると、やはり問題の現象、

id="description"のテキストエリアに文字を入力するとその文字数カウントが反映

になりますでしょうか?

解決の一助になれば幸いです。

投稿2015/06/27 14:02

編集2015/06/27 14:12
jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

schwarzewald

2015/06/27 14:49 編集

お手数おかけして申し訳ありません、こちらの環境でも不具合は再現されませんでした。 質問するに当たり関係ないところは削ったので、もしかしたら削ったところにある他の何かが影響しているのかもしれません。
jun68ykt

2015/06/27 14:55

>もしかしたら削ったところにある他の何かが影響しているのかもしれません。 そのように推測できる状況でしたら、問題解決に向けて 確実に進んでいらっしゃると思いますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問