質問: 画面に支払日というコンボボックスがあり、その値はDB処理から取得した値で設定しています。設定後、初期値としてはサーバーサイド側で処理した値を表示するようにしています。 そして、その支払日コンボボックスのchangeイベント発生でchangeイベントの受け取るパラメタとして初期値として表示したサーバーサイド側で処理した値が渡ってくると思いきやDBから取得した値が何度も渡ってchangeイベントの処理が繰り返し実行されているため画面の表示が意図したものと違う形になってしまいます。 どういったことが原因であると考えられますでしょうか。初期値として表示したサーバーサイド側で処理した値のみをchangeイベントへのパラメタとして渡ってchangeイベントが行われるのが理想です。 コードの例: ``` 支払日コンボボックス.change(function(event){ // ここでvalメソッドで取得した値がDB処理から取得した値になってしまう。 ``` ●処理の流れ ・画面の初期表示時、Ajaxを使用しDBから取得した値をJSで受け取り支払日コンボボックスに設定し、初期表示の値にサーバーサイド側で処理した値を表示 ・支払日コンボボックスのchangeイベント処理発生
回答: > > changeイベント発生でchangeイベントの受け取るパラメタとして初期値として表示したサーバーサイド側で処理した値が渡ってくると思いきやDBから取得した値が何度も渡って > > > `サーバーサイド側で処理した値`と`DBから取得した値`というところの意味がわかっていませんが、どちらの値でも一度 HTML上で``にしてしまえば、 以下のように、`change`の関数内で、`$("option:selected", this)`の値(text()やval())を取得すれば変更された``の値を取得できると思います。 ``` $("select").change(function () { var str = $("option:selected", this).text() + ":" + $("option:selected", this).val() $( "div" ).text( str ); }) ``` ``` Chocolate Candy Taffy Caramel Fudge Cookie 選択結果 ``` 参考: jquery select change event get selected option