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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

JavaScript

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

HTML

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

Q&A

解決済

2回答

2188閲覧

js チェックボックスの選択不可、項目数上限処理について

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2020/07/22 00:36

$(function () { // チェックボックスをチェックしたら発動 $('input[name="test[]"]').change(function () { // ①チェックが入ったチェックボックスの個数を変数に格納 var len = $('input[name="test[]"]:checked').length; // ②チェックが4つ以上入ったら if (len >= 4) { // ③disabledを付けてチェックできなくする $('input[name="test[]"]').not(':checked').attr('disabled', 'disabled'); // チェックが2つ未満だったら } else { // ④disabledを削除してチェックできるようになる $('input[name="test[]"]').not(':checked').removeAttr('disabled'); } }); });

こちらの処理を書いたんですが、これではページを更新した時にチェック可能状態になってしまい、4つ以上選択できる状態になっています。

これをページ更新または入りなおした時に既に4つである場合は選択不可の状態にしておきたいです。

書き直していただけませんか。よろしくお願いします。
できれば解説もしていただければと思います。

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

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

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

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

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

guest

回答2

0

javascript

1$(function(){ 2 var max=4; 3 $('[name="test[]"]').on('change',function(){ 4 var flg=$('[name="test[]"]:checked').length>=max; 5 $('[name="test[]"]:not(:checked)').prop('disabled',flg); 6 }).eq(0).trigger('change'); 7});

投稿2020/07/22 01:19

yambejp

総合スコア116724

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

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

0

ベストアンサー

いちばん手抜きな方法としては、「ページ表示時にハンドラを実行してしまう」方法があります。

javascript

1$(function () { 2 // チェックボックスをチェックしたら発動 3 $('input[name="test[]"]').change(function () { 4 // 中身は省略 5 }).change(); 6});

投稿2020/07/22 00:48

maisumakun

総合スコア146018

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

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

退会済みユーザー

退会済みユーザー

2020/07/22 01:02

チェックしたらっていうやつを最後に呼び出してっていうことですか。 確かに進みましたが...すいません簡単に解説を。
maisumakun

2020/07/22 01:04

> チェックしたらっていうやつを最後に呼び出してっていうことですか。 そのとおりです。特にこのハンドラ内で「いま変更したもの」に依存するコードはありませんので、単に実行すれば適切な処理を適用できます。
退会済みユーザー

退会済みユーザー

2020/07/22 01:38

でも表示時に[チェック]はクリックも何もしてないですよね。「した」っていうことに強制したんですか?
maisumakun

2020/07/22 01:40

最後の.change();は、動作に関係なく「ハンドラを呼び出す」という意味です。
退会済みユーザー

退会済みユーザー

2020/07/22 01:52

やったことになんかできるんですね。知らなかったです。勉強になりました。 他の方の回答もありがたくメモさせていただきます。ありがとうございました。
hentaiman

2020/07/22 02:05

>やったことになんかできるんですね。 その理解の仕方は雑過ぎる。「jquery メソッドチェーン」で検索して何故メソッドチェーンが出来るのかjqueryの特徴を調べて知識補足した方が良いですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問