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

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

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

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

Q&A

解決済

3回答

3911閲覧

jQueryのセレクタを使用しtextの入力内容でフィルタを掛けlengthを取得したい。

masapu

総合スコア29

jQuery

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

0グッド

0クリップ

投稿2017/06/30 11:23

###前提・実現したいこと
jQueryのセレクタでtextのvalueのlengthを取得したい。

###発生している問題について

jquery-1.11.2.min.jsを使用しています。

以下のコードでtextのvalueが"hogehoge"の物の個数を取得したいのですが、
どうしてもページ読み込み時の個数しか返してくれません。(以下のコードで言うとlength=2)
どの様に記述すればtext変更後の個数を返却してくれるでしょうか?

<!DOCTYPE> <html> <head> <script type="text/javascript" src="jquery-1.11.2.min.js"></script> </head> <script> $(function(){ $("[name^=hogetext]").on("blur",function(){ if ($('[name^=hogetext]:text[value="hogehoge"]').length <= 1 ) { //hogehogeを0個にしてもここには入ってこない。。 alert("hogehogeは最低1つ以上必要です。"); return; } }); }); </script> <body> <input type="text" name="hogetext1" value="hogehoge"/></td> <input type="text" name="hogetext2" value="hogehoge"/></td> <input type="text" name="hogetext3" value="ccc"/></td> <input type="text" name="hogetext4" value="ddd"/></td> <input type="text" name="hogetext5" value="eee"/></td> </body> </html>

ちなみに以下のコードを実行すると、入力時の内容が返却されました。
(hogetext1をaaaとしたところ aaa が返ってきました。)
$('[name^=hogetext]:text[value="hogehoge"]').eq(0).val();

$('[name^=hogetext]:text[value="hogehoge"]').length では常に2が返ってくるのに、、、

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

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

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

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

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

guest

回答3

0

ベストアンサー

属性セレクタ [value] はvalue属性値を参照しますが、ユーザがテキストボックス(input要素)内の文字列を編集しても、value属性値まで編集されるわけではありません。
後から編集された値はinput要素ノードの value プロパティに格納されている為、そちらを参照します。

HTML

1<input type="text" name="hogetext1" value="hogehoge"/> 2<input type="text" name="hogetext2" value="hogehoge"/> 3<input type="text" name="hogetext3" value="ccc"/> 4<input type="text" name="hogetext4" value="ddd"/> 5<input type="text" name="hogetext5" value="eee"/> 6<script> 7'use strict'; 8$("[name^=hogetext]").on("blur",function(){ 9 if (!$('[name^=hogetext]').filter(function (i, input) { return input.value === 'hogehoge'}).length) { 10 //hogehogeを0個にしてもここには入ってこない。。 11 alert("hogehogeは最低1つ以上必要です。"); 12 } 13}); 14</script>

Re: masapu さん

投稿2017/06/30 12:34

think49

総合スコア18162

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

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

0

こうするとhogehogeが設定されているhogetextの数を数えてくれます

javascript

1$(function(){ 2 $('[name^=hogetext]').on('blur',function(){ 3 console.log($('[name^=hogetext]').filter(function(){return $(this).val()=="hogehoge";}).length); 4 }); 5}); 6

投稿2017/06/30 12:33

yambejp

総合スコア114829

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

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

0

属性セレクタはブラウザ描画時の属性を基準に動くので、質問文のような状況なら eachで全走査するのが良いと思います。

【.each() | jQuery API Documentation】
https://api.jquery.com/each/

投稿2017/06/30 11:47

編集2017/06/30 11:48
kei344

総合スコア69407

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問