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

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

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

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

HTML

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

Underscore.js

Underscore.jsは、JavaScriptのためのユーティリティライブラリです。JavaScriptの関数・配列、オブジェクトを扱う際に度々発生する処理がメソッドとしてまとめられています。他のライブラリに依存しないため、稼働中のアプリケーションにも導入可能です。

Q&A

解決済

3回答

1454閲覧

jquery の.changeが機能しない

退会済みユーザー

退会済みユーザー

総合スコア0

jQuery

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

HTML

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

Underscore.js

Underscore.jsは、JavaScriptのためのユーティリティライブラリです。JavaScriptの関数・配列、オブジェクトを扱う際に度々発生する処理がメソッドとしてまとめられています。他のライブラリに依存しないため、稼働中のアプリケーションにも導入可能です。

0グッド

0クリップ

投稿2017/05/24 01:35

編集2017/05/24 04:42

underscore.jsというテンプレートを使っております。
目的としては、まず、プルダウンの値が変わったときにchange関数が動くことです。
最終的な目的は、プルダウンで商品をどれか選んだらそれに対応している商品の番号を
となりの、<td>タグの所でプルダウンさせるというイメージです。

正しく、動いているほうでは部門を選んだら、
それに対応する担当者のリストがプルダウンで選べるようになっています。

下のコードはちゃんと動くのに

$(#sc_dept").change(function(){ var prmURL = 'wa_getUser'; var thisSelect = $('[name=sc_dept] option:selected').text(); var reqtxt = 'sc_dept=' + thisSelect; ajaxRequest(prmURL, reqtxt); });

次のコードは動きません。何故でしょうか?
id指定のタイプミスなどはありません

$(#sc_mname").change(function(){ var prmURL = 'wa_getmtlnum'; var thisSelect = $('[name=m-name] option:selected').text(); var reqtxt = 'm-name=' + thisSelect; ajaxRequest(prmURL, reqtxt); });

htmlコードはこうなっています。
動作するのが

<div class="col-md-12 col-sm-4 col-md-3"> <div class="form-group cs-orgfg"> <label for="sc_dept" class="control-label cs-labcol input-sm col-xs-2 col-sm-2 col-md-2">部門</label> <div class="input-group cs-divcol col-xs-9 col-sm-9 col-md-9"> <select class="form-control input-sm" id="sc_dept" name="sc_dept"></select> </div> </div> </div>
<script type="text/template" id="ust-pddept"> <option value=""></option> <% for(var i=0; i < Dept.length; i++){ %> <option value="<%- Dept[i] %>"><%- Dept[i] %></option> <% } %> </script>

動作しないのが

<form> <td class="list0-col1"> <select class="form-control input-sm" id="sc_mname" name="m-name"> <option value=""></option> <% for(var j=0; j < MST_品名.品名.length; j++){ %> <option value="<%- MST_品名.品名[j] %>"><%- MST_品名.品名[j] %></option> <% } %></select> </td> </form>

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

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

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

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

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

m.ts10806

2017/05/24 01:46

コードの部分は </>ボタン使ってコード記法にしてください。また、これだけではタイプミスや存在しない名称以外の回答が得られないので、HTMLもご提示ください。
退会済みユーザー

退会済みユーザー

2017/05/24 04:16

すいませんでした。これから書き直します。少々、お待ちください
m.ts10806

2017/05/24 04:28 編集

確認事項が不足しておりました。何かフレームワークかテンプレートエンジンのようなものをお使いでしょうか?でしたらそれもご提示ください。また、「どうなるべきか」「どうしたいか」のゴールもあわせてご提示いただけると回答が得られやすいと思います。
退会済みユーザー

退会済みユーザー

2017/05/24 04:27

質問を編集しました。確認の方、お願いします
退会済みユーザー

退会済みユーザー

2017/05/24 04:43

質問を編集しました。確認の方、お願いします
guest

回答3

0

HTML部分がなくて要素の配置がわかりづらいこともあって確定的なコメントはできませんが、属性セレクタの値に引用符がついていないと、うまく動かないことがあります。

$('[name="m-name"] option:selected')のようにしてみたら、どうなりますか?

投稿2017/05/24 01:45

maisumakun

総合スコア145121

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

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

退会済みユーザー

退会済みユーザー

2017/05/24 04:56

回答ありがとうございます。 しかし、その方法でも動きませんでした。 もし、他にも方法があれば教えて頂けると嬉しいです。
guest

0

追記ありがとうございます。
しかし、本当にタイプミスはありませんか?

動く仰るコードですが

JavaScript

1$(#sc_dept").change(function() 23$("#sc_dept").change(function() 4

と、頭の「”」が足りてません。
動かないと仰るコードも同じですね。まずはそこを修正してください。
本当にご提示の記述であれば「Uncaught SyntaxError: Invalid or unexpected token」というようなエラーが起きてるはず・・・

上記修正したうえで、ひとまず下記のようにしたところ、正常に選択した内容が出力できました。
取得自体は問題なく出来るようですね。

JavaScript

1$("#sc_mname").change(function(){ 2 var thisSelect = $('[name=m-name] option:selected').text(); 3 alert(thisSelect); 4}); 5

何かエラーが出ていませんか?
セレクトボックスが正常に生成されてないとか、実はunderscore.jsの記法が邪魔してたとか・・・

投稿2017/05/24 05:02

m.ts10806

総合スコア80765

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

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

退会済みユーザー

退会済みユーザー

2017/05/29 21:43

返事が遅れてしまい申し訳ありません。 おそらく、それはコピペをした時に間違えて消してしまったものですね。 エラーは rangeerror invalid string length というものが出ますね
m.ts10806

2017/05/30 06:48 編集

rangeerror は何(どの変数になど)に対して出ていますか? 基本は「値が配列内に存在しない、または値が許容範囲にない場合のエラー」なので配列を指定してはいるものの中身に何も入ってないとか、配列に入れられる許容サイズを超えているとかではないかなぁと思います。
guest

0

ベストアンサー

.changeではなく$(document).on('change',id名,function)で解決できました。

投稿2017/06/01 01:01

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問