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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

5回答

500閲覧

ページ内に複数あるセレクトボックスの値をjQueryで取得したい。

bataman

総合スコア13

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/01/31 05:34

ページ内に複数あるセレクトボックスの値をjQueryで取得したい。

HTMLで作成しているフォーム内に複数あるセレクトボックスの値を
各、セレクトボックス毎に取りたいと思っています。

現状は問題切り分けのためにセレクトボックス2の値しかconsole.logしてませんが
最終的には全てのセレクトボックスの値を別々に取得したいです。

以上宜しくお願いします。

発生している問題・エラーメッセージ

セレクトボックス1・セレクトボックス2・セレクトボックス3があり セレクトボックス2の値を取ろうとしました、、 しかし、ブラウザのコンソールのログで確認したところ、 なぜかセレクトボックス2の項目を選んだ時に、セレクトボックス1の値が取られてしまう。

該当のソースコード

htmljQuery

1 <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script> 2 3 <select id="a222" name="test"> 4 <option>セレクトボックス1</option> 5 <option value="A1">項目1の1</option> 6 <option value="A2">項目1の2</option> 7 <option value="A3">項目1の3</option> 8 </select> 9 10 <select id="b222" name="test2"> 11 <option>セレクトボックス2</option> 12 <option value="B1">項目2の1</option> 13 <option value="B2">項目2の2</option> 14 <option value="B3">項目2の3</option> 15 </select> 16 17 <select id="c333" name="test3"> 18 <option>セレクトボックス3</option> 19 <option value="C1">項目3の1</option> 20 <option value="C2">項目3の2</option> 21 <option value="C3">項目3の3</option> 22 </select> 23 24 <script type="text/javascript"> 25 $('[name=test2]').change(function() { 26 var k2 = $('option:selected').val(); 27 console.log(k2); 28 }) 29 </script>

試したこと

$('[name=test2]').change(function() {

$('select#b222').change(function() {
などのID指定してみましたがうまくいきませんでした、、

補足情報(FW/ツールのバージョンなど)

確認環境
MAMP 5.2
osx 10.14 Safari バージョン12.0.2

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

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

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

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

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

guest

回答5

0

ベストアンサー

$('option:selected').val();

これはすべてのoptionの中でselectedされた最初の要素のvalueなので
当然セレクトボックス1が拾われます
あえて同じロジックで考えるなら

$(this).find('option:selected').val();

ですが実質$(this).val()が正解です。

javascript

1$(function(){ 2 $('[name=test2]').on('change',function() { 3 var k2 = $(this).val(); 4 console.log(k2); 5 }); 6});

投稿2019/01/31 05:43

yambejp

総合スコア114843

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

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

bataman

2019/01/31 06:26

こんにちは はじめまして。 ありがとうございます! 実質、実用的な?jsを自力で初めて組み始めて、何もわからないまま早速つまづいてしまいました。 $(this).val(); で[name=test2]の値に限定することができるのですね! ありがとうございます、勉強になります。 .on()もまだ理解できませんが、色々な値やイベント等を複数含ませることができるっぽですね(理解が追いつきませんが、、) $(function(){ }); これはどんな機能があるんでしょうか?ググってみましたが少しよくわかりません、、
yambejp

2019/01/31 06:41

$(function(){...}); は、ページのdomが構築されたあとに処理をするものです 質問者さんはhtmlの後半にscriptを書く必要がありましたが これを使うと前半部分にまとめることができます (jsを外部ファイル化するときなどに有効)
bataman

2019/01/31 06:45

なるほど! そう言うことなのですね、ありがとうございます。 よくある外部化等行うのに使えるんですね
guest

0

イベントを設置するのは複数に付ければ良いのですが、
発火した時はこのセレクトボックスという意味を含めたthisを起点にすると良いでしょう。
http://js.studio-kingdom.com/jquery/events/change

JavaScript

1$("input[type='text']").change( function() { 2 // $(this).val() で値を参照することができます。 3});

こんな風に$(this)で包んでしまって、
.attr('name')の値がtest2だったらこんなふうにする
…などといった記述を書いていけば質問文のやりたいことを実現出来るんじゃないかと思います。

投稿2019/01/31 05:46

miyabi-sun

総合スコア21158

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

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

bataman

2019/01/31 06:36

こんにちははじめまして .attr()なんてものもあるんですね。 はじめてのjsで全くわからないことばかりですが、一度.attr()の方もみてみようかと思います。 ありがとうございます!
guest

0

var k2 = $('option:selected').val();

var k2 = $(this).val();
でとれると思います。

$('option:selected').val();だと全体の中でselectedされているものの値をとってくるようになってしまうと思います。
$(this).val();は、changeが発動したものの中で選択中の値をとります。

投稿2019/01/31 05:45

240

総合スコア20

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

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

bataman

2019/01/31 06:31

こんにちは はじめまして yambejpさんもおっしゃるように、$(this).val();の部分がミソなんですね。 はじめてjsで作り始めて早速つまづいてしまいました。 非常に分かりやすい説明ありがとうございます! 勉強する手がかりになりそうです。
guest

0

javascript

1<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script> 2 3 4 <select id="a222" name="test"> 5 <option value="A1">項目1の1</option> 6 <option value="A2">項目1の2</option> 7 <option value="A3">項目1の3</option> 8 </select> 9 <select id="b222" name="test2"> 10 <option value="B1">項目2の1</option> 11 <option value="B2">項目2の2</option> 12 <option value="B3">項目2の3</option> 13 </select> 14 15 <select id="c333" name="test3"> 16 <option value="C1">項目3の1</option> 17 <option value="C2">項目3の2</option> 18 <option value="C3">項目3の3</option> 19 </select> 20 21 22<script type="text/javascript"> 23 $(function(){ 24 $('[name=test]').change(function() { 25 var k1 = $(this).val(); 26 console.log(k1); 27// 処理内容 28 }) 29 .trigger('change'); 30 31 $('[name=test2]').change(function() { 32 var k2 = $(this).val();; 33 console.log(k2); 34// 処理内容 35 }) 36 .trigger('change'); 37 38 $('[name=test3]').change(function() { 39 var k3 = $(this).val(); 40 console.log(k3); 41// 処理内容 42 }) 43 .trigger('change'); 44 }); 45</script> 46

.trigger('change');を追加し、項目の初期値を読めるようにしました。
$(function(){});も追加し、外部ファイル化できるようにしました。
皆様ありがとうございます。

投稿2019/01/31 07:36

bataman

総合スコア13

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

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

0

javascript

1 2<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script> 3 4 <select id="a222" name="test"> 5 <option value="A1">項目1の1</option> 6 <option value="A2">項目1の2</option> 7 <option value="A3">項目1の3</option> 8 </select> 9 <select id="b222" name="test2"> 10 <option value="B1">項目2の1</option> 11 <option value="B2">項目2の2</option> 12 <option value="B3">項目2の3</option> 13 </select> 14 15 <select id="c333" name="test3"> 16 <option value="C1">項目3の1</option> 17 <option value="C2">項目3の2</option> 18 <option value="C3">項目3の3</option> 19 </select> 20 21<script type="text/javascript"> 22 $(function(){ 23 $('[name=test]').change(function() { 24 var k1 = $(this).val(); 25 console.log(k1); 26// 処理内容 27 }) 28 .trigger('change'); 29 30 $('[name=test2]').change(function() { 31 var k2 = $(this).val();; 32 console.log(k2); 33// 処理内容 34 }) 35 .trigger('change'); 36 37 $('[name=test3]').change(function() { 38 var k3 = $(this).val(); 39 console.log(k3); 40// 処理内容 41 }) 42 .trigger('change'); 43 }); 44</script> 45

セレクトボックスの初期値を反映させるために.trigger('change');を追加
外部ファイル化が行えるように$(function(){で囲んでみました。
皆様ありがとうございました。

投稿2019/01/31 07:32

bataman

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問