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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

jQuery

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Underscore.js

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

Q&A

解決済

2回答

3431閲覧

HTML Jquery select要素にdisabledの設定と解除

退会済みユーザー

退会済みユーザー

総合スコア0

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

jQuery

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Underscore.js

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

0グッド

0クリップ

投稿2017/07/13 08:04

編集2017/07/14 00:34

5つのセレクトボックスがあり、
それらは大→中→小→細→詳細のように
リレーションされていて
大を選ぶと中が。中を選ぶと小が選べるようになっています。

その時に、もし次のセレクトボックスに選べるものが無い場合には
disabledを付与させてクリックさせなくしたいです。

html

1<script type="text/template" id="mst"> 2 <form id="form-m" class="form-horizontal"> 3 4 <div class="row"> 5 <div class="dai col-md-4"> 6 <h4>大分類</h4> 7 <p> 8 <select class="form-control input-sm" id="dai" name="dai"> 9 <option value=""></option> 10 <% for(var i=0; i < 大分類.length; i++){ %> 11 <option value="<%- 大分類[i] %>" data-id="<%- ID[i] %>"><%- 大分類[i] %></option> 12 <% } %> 13 </select> 14 </p> 15 </div> 16 <div class="tyu col-md-4"> 17 <h4>中分類</h4> 18 <p> 19 <select class="form-control input-sm" id="tyu" name="tyu"></select> 20 </p> 21 </div> 22 <div class="syou col-md-4"> 23 <h4>小分類</h4> 24 <p> 25 <select class="form-control input-sm" id="syou" name="syou"></select> 26 </p> 27 </div> 28 </div> 29 30 <div class="row"> 31 <div class="syou1 col-md-4"> 32 <h4>小分類1</h4> 33 <p> 34 <select class="form-control input-sm" id="syou1" name="syou1"></select> 35 </p> 36 </div> 37 <div class="msyou2 col-md-4"> 38 <h4>小分類2</h4> 39 <p> 40 <select class="form-control input-sm" id="syou2" name="syou2"></select> 41 </p> 42 </div> 43 </div> 44 45 <div class="row"> 46 <div class="col-md-12 col-sm-12 col-md-6"> 47 <div id="id-pager"></div> 48 </div> 49 </div> 50 51 <table id="table-m" class="table"></table> 52 53 </form> 54 55</script>

html

1<script type="text/template" id="tyu"> 2 <option value=""></option> 3 <% for(var i=0; i < 中分類.length; i++){ %> 4 <option value="<%- 中分類[i] %>" data-id="<%- ID[i] %>"><%- 中分類[i] %></option> 5 <% } %> 6</script> 7 8<script type="text/template" id="syou"> 9 <option value=""></option> 10 <% for(var i=0; i < 小分類.length; i++){ %> 11 <option value="<%- 小分類[i] %>" data-id="<%- ID[i] %>"><%- 小分類[i] %></option> 12 <% } %> 13</script> 14 15<script type="text/template" id="sai"> 16 <option value=""></option> 17 <% for(var i=0; i < 小分類1.length; i++){ %> 18 <option value="<%- 小分類1[i] %>" data-id="<%- ID[i] %>"><%- 小分類1[i] %></option> 19 <% } %> 20</script> 21 22<script type="text/template" id="dtl"> 23 <option value=""></option> 24 <% for(var i=0; i < 小分類2.length; i++){ %> 25 <option value="<%- 小分類2[i] %>" data-id="<%- ID[i] %>"><%- 小分類2[i] %></option> 26 <% } %> 27</script>

js

1$(".a").attr("disabled","disabled"); 2 3$(".a").prop('disabled',true);

上記のような方法を試したのですが駄目でした。
いくら探しても見つからないので
分かる方がいましたら、よろしくお願い致します。

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

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

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

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

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

yambejp

2017/07/13 08:09

上位のセレクトボックス選択で、下位のセレクトボックスをajaxで読みにいったりするのでしょうか?それとも5つの要素は常に構成要素は固定なのでしょうか?
kei344

2017/07/13 15:26

書かれている状況が再現するコード(HTML/CSS/JavaScriptなど)か、再現するURLを提示されたほうが回答を得やすいと思います。
退会済みユーザー

退会済みユーザー

2017/07/14 00:25

yambejpさん そうですね。画面を開くときに事前に大をajaxで読みにいって、大を選んだらそれに応じてajaxでよみ中のリストを作成する形です。
退会済みユーザー

退会済みユーザー

2017/07/14 00:34

kei344さん ご指摘ありがとうございます。ただいま、htmlを追加させていただきました
guest

回答2

0

ベストアンサー

そのどちらの記述でも動作するはずですので、問題は$(".a")が本当に目的のタグを指しているかどうかではなのではないでしょうか。
デベッロパーツール等を利用して、よくご確認ください。

投稿2017/07/13 08:18

zohnam

総合スコア1441

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

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

退会済みユーザー

退会済みユーザー

2017/07/14 05:22

回答ありがとうございます。 しかし、指定先は間違っていませんでした。 .childrenや.find,.parentも試してみましたが全く反応はありませんでした
退会済みユーザー

退会済みユーザー

2017/07/14 05:43

申し訳ありません。 指定先は合っていたのですが、 処理の各場所をまちがえていたようです。
guest

0

考え方は2つ

  • サーバー側でデータをかえすのだからサーバ側でdisableを付加してかえす
  • クライアント側の処理にまかせるなら、JSONで受け取っていれば

要素数が0ならdisable、セレクトボックスタグでうけとっているなら、
デフォルト値を持っている前提でoptionの数が1ならdisabled

ということでどうでしょうか?

sample

一応ざっくり書いてみました
ajaxで呼び込む場合、タイミング調整がいるかと思いますが流れ的にこんな感じです。

  • 初期状態で選べるのはLLのみ
  • LLを選択するとLが選べる、同様にL→M、M→S、S→SS
  • 上位の選択肢を--にすると下位の選択肢も--になり、disabledに戻る
  • なにかを選んだとして下位の選択肢が1つもなければdisabledのまま

(今回ではSがなにもないのでMを選択してもSはdisabled)

javascript

1$(function(){ 2 $('.a').on('change',function(){ 3 var v=$(this).val(); 4 if(v==""){ 5 $(this).nextAll('.a').prop({'disabled':true,"selectedIndex":0}); 6 }else{ 7 var flg=$(this).next('.a').children('option').length<=1; 8 $(this).next('.a').prop('disabled',flg); 9 } 10 }).trigger('change'); 11});

HTML

1<form> 2<select class="a" name="LL"> 3<option value="">--</option> 4<option value="a">a</option> 5<option value="b">b</option> 6<option value="c">c</option> 7</select> 8<select class="a" name="L"> 9<option value="">--</option> 10<option value="a">a</option> 11<option value="b">b</option> 12<option value="c">c</option> 13</select> 14<select class="a" name="M"> 15<option value="">--</option> 16<option value="a">a</option> 17<option value="b">b</option> 18<option value="c">c</option> 19</select> 20<select class="a" name="S"> 21<option value="">--</option> 22</select> 23<select class="a" name="SS"> 24<option value="">--</option> 25</select> 26</form>

投稿2017/07/14 00:38

編集2017/07/14 06:23
yambejp

総合スコア114829

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

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

退会済みユーザー

退会済みユーザー

2017/07/14 05:32

回答ありがとうございます。 クライアント側でjsonデータを受け取っています。 しかし、disabledが反応しません。 試しに直接、disabledを書き込むと動いたので jqueryではselectボックスにはdisabledの制御は対応していないということなのでしょうか?
yambejp

2017/07/14 06:24

一応sample上げておきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問