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

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

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

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

jQuery

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

Q&A

解決済

3回答

4811閲覧

どれか一つでも選択されていれば活性化するボタン

hibikikudo

総合スコア238

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/10/06 05:56

###前提・実現したいこと
tdがどれか一つでも選択されていれば活性化、何も選択されていなければ非活性(disabled)するボタンを作りたい。
動くサンプル

###発生している問題・エラーメッセージ
複数のtdを選択してから、一つのtdの選択を解除すると、ボタンのdisabledがうまく動いてくれません(選択されているtdがあるのに、活性化しない)。
$(this)と書いているために、すべての要素ではなくそのクリックした要素だけを見てしまっているためで、すべての要素をチェックするためには.eachまたは.filterを使用した関数を組み込むのだと思いますが、この勘所がいまいちわかりません…

###該当のソースコード

html

1 2 <tr> 3 <th class="js-dow">mon</th> 4 <th class="js-dow">tue</th> 5 <th class="js-dow">wed</th> 6 <th class="js-dow">thu</th> 7 <th class="js-dow">fri</th> 8 <th class="js-dow">sat</th> 9 <th class="js-dow">sun</th> 10 </tr> 11 <tr> 12 <td>1</td> 13 <td>2</td> 14 <td>3</td> 15 <td>4</td> 16 <td>5</td> 17 <td>6</td> 18 <td>7</td> 19 </tr> 20 <tr> 21 <td>8</td> 22 <td>9</td> 23 <td>10</td> 24 <td>11</td> 25 <td>12</td> 26 <td>13</td> 27 <td>14</td> 28 </tr> 29 <tr> 30 <td>15</td> 31 <td>16</td> 32 <td>17</td> 33 <td>18</td> 34 <td>19</td> 35 <td>20</td> 36 <td>21</td> 37 </tr> 38 <tr> 39 <td>22</td> 40 <td>23</td> 41 <td>24</td> 42 <td>25</td> 43 <td>26</td> 44 <td>27</td> 45 <td>28</td> 46 </tr> 47</table> 48<button type="reset" id="resetDate">reset</button>

javascript

1 $('#resetDate').prop('disabled', true); 2 cell.on('click', function () { 3 if ($(this).hasClass('selected') == false) { 4 $('#resetDate').prop('disabled', true); 5 } else { 6 $('#resetDate').prop('disabled', false); 7 } 8 }); 9});

何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

やりたいことはこんな感じでしょうか?

https://jsfiddle.net/29fv96gy/

投稿2016/10/07 05:25

monzy

総合スコア85

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

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

hibikikudo

2016/10/07 07:02

ありがとうございます。私もちょうど自己解決したのですが、この方法でした。
guest

0

classの数を数えて0だったらdisableにするとか

jQuery

1$(function() { 2 $('#resetDate').prop('disabled', true); 3 cell.on('click', function () { 4 if ($(".selected").length == 0) { 5 $('#resetDate').prop('disabled', true); 6 } else { 7 $('#resetDate').prop('disabled', false); 8 } 9});

投稿2016/10/06 06:55

date

総合スコア1820

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

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

hibikikudo

2016/10/07 07:04

ありがとうございます。大変参考になりました。
guest

0

これって前回の続きでcheckboxがあるっていう認識でよいですよね?
であればresetをおしたら、全checboxをクリアして
各checkboxのchange()を発行してやればいいのでは?

追記

失礼しました別件ですね。以下でどうでしょうか?

javascript

1$(function() { 2 $('#t1 td').on('click',function(){ 3 $(this).toggleClass('selected',function(index,prop){return !prop;}); 4 var flg=$('#t1 td.selected').length==0; 5 $('#resetDate').prop('disabled',flg); 6 }); 7 $('#resetDate').on('click',function(){ 8 $('#t1 td').removeClass('selected'); 9 }).prop('disabled',true); 10});

投稿2016/10/06 06:06

編集2016/10/06 06:57
yambejp

総合スコア114747

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

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

yambejp

2016/10/06 07:04

早とちりでした。追記しておきました
hibikikudo

2016/10/07 07:04

回答ありがとうございます。参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問