時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【jQuery】同意チェックボックスでボタンを有効に切り替え【disabled】

記事内に広告を含みます

パソ君
パソ君

・チェックボックスをクリックしたらボタンを有効にしたい!どうやるの?

こんな疑問にお答えします。

「同意する」にチェックする項目があるお問い合わせフォームは、よく見ますよね。

そのチェックボックスをクリックしないと、送信しない仕様にしたいはず。

下記みたいに↓

これ以外と簡単に実装できちゃいます。

ジト
ジト

すぐにできるよ!

ということで、この記事では「同意チェックボックスでボタンを有効に切り替え方法」について解説していきます!

この記事でわかること

・同意チェックボックスでボタンを有効に切り替え

【jQuery】同意チェックボックスでボタンを有効に切り替え【disabled】

結論から言うと、実装コードはこちらになります↓

See the Pen Untitled by jito-coder (@jito-coder) on CodePen.

<div class="form-box">
    <form>
        <div class="form-box__item">
            <input type="checkbox" id="consent" name="consent">
            <label for="consent">同意する</label>
        </div>
        <input type="submit" value="送信" class="btn"  id="btn-consent" disabled>
    </form>
</div>
.btn {
    font-size: 16px;
    text-align: center;
    width: 200px;
    max-width: 100%;
    padding: 10px;
    margin-top: 20px;
    border-radius: 30px;
    color: #fff;
    background-color: #000066;
    border: 1px solid transparent;
}
.btn[type="submit"][disabled] {
    color: #ccc;
    border: 1px solid #ccc;
    background-color: #fff;
}
$("#consent").change(function () {
    if ($(this).is(":checked")) {
    $("#btn-consent").prop("disabled", false);
    } else {
    $("#btn-consent").prop("disabled", true);
    }
});

コードの意味としてはこういうこと。

  1. inputに「disabled」をつける
  2. 「disabled」がある時のCSSを記述
  3. チェックボックスをクリックしたら「disabled」をなくす

順に解説していきます。

➀:inputに「disabled」をつける

まず送信ボタンのinputタグに対して、「disabled」属性をつけておきます。

<input type="submit" value="送信" class="btn"  id="btn-consent" disabled>

これでボタンをクリックできない状態になりました。

:「disabled」がある時のCSSを記述

次に「disabled」属性の有無それぞれに対して、CSSを記述していきます。

.btn[type="submit"][disabled] {
    color: #ccc;
    border: 1px solid #ccc;
    background-color: #fff;
}

「disabled」がついてるとき、上記の背景色・色・ボーダーが反映。

③:チェックボックスをクリックしたら「disabled」をなくす

最後にjQueryを用いて、チェックボックスをクリックしたら「disabled」属性をなくす記述をします。

$("#consent").change(function () {
    if ($(this).is(":checked")) {
    $("#btn-consent").prop("disabled", false);
    } else {
    $("#btn-consent").prop("disabled", true);
    }
});

上記コードは、チェックボックス(#consent)の中身が変更(change)したら、送信ボタン(#btn-consent)のdisabledを有効or無効にするという意味。

もしチェックボックスにチェックが入っていたらdisabledを無効(false)に、チェックが入ってなかったらdisabledを有効(true)にしています。

これで同意ボタンをクリックしたら、送信できるような仕様に実装することができました!

ジト
ジト

簡単だね!

ちょっと効率化の小技

ちなみにわざわざCSSに、disabledに対しての記述しなくてもOKなやり方があります。

それがjQueryにCSSのスタイル変更を記述すること。

要は下記ですね↓

$("#consent").change(function () {
    if ($(this).is(":checked")) {
    $("#btn-consent").prop("disabled", false);
    $("#btn-consent").css({ "background-color": "#000066" });
    } else {
    $("#btn-consent").prop("disabled", true);
    $("#btn-consent").css({ "background-color": "#ccc" });
    }
});

この場合、クリックしたらcssを変更させることができます。ちょっと効率化したいときは、このやり方がオススメ!

JavaScriptで記述する場合

jQueryではなく、JavaScriptで記述したい場合もあるはず。

正直やりかたは変わりません。

コードはこちら↓

See the Pen Untitled by jito-coder (@jito-coder) on CodePen.

<div class="form-box">
    <form>
        <div class="form-box__item">
            <input type="checkbox" id="consent" name="consent" onclick="btnConsent();">
            <label for="consent">同意する</label>
        </div>
        <input type="submit" value="送信" class="btn"  id="btn-consent">
    </form>
</div>
function btnConsent() {
    if (consent.checked) {
        document.getElementById("btn-consent").disabled = "";
    } else {
        document.getElementById("btn-consent").disabled = "disabled";
    }
}
window.onload = btnConsent;

jQueryと違う点はこちら↓

  • 初期値、HTMLにdisabled属性をつけない
  • ロード時、もしくはチェックボックスをクリックしたらJavaScriptが発動
  • 送信ボタンに対してdisabled属性をつけたり外したり

同意チェックボックスが複数ある時・ボタンを有効に切り替え【disabled】

最後にチェックボックスが複数ある時の場合の、ボタン切り替え方法を紹介します。

案件によっては、同意するチェック項目が2つ以上の時もあるんですよね。

先述したやり方では、チェックボックスを1つでもクリックしたら、送信ボタンを押せるようになってしまいます。

つまり指定方法を少し変える必要があるんですよ。

やり方は簡単。こちら↓

See the Pen お問い合わせチェック jQuery by jito-coder (@jito-coder) on CodePen.

<div class="form-box">
    <form>
        <div class="form-box__item">
            <input type="checkbox" id="consent1" name="consent" class="js-checkbox">
            <label for="consent1">同意する</label>
        </div>
        <div class="form-box__item">
            <input type="checkbox" id="consent2" name="consent" class="js-checkbox">
            <label for="consent2">ボタン送信後はいかなる場合でも了承する</label>
        </div>
        <input type="submit" value="送信" class="btn"  id="btn-consent" disabled>
    </form>
</div>
$(".js-checkbox").change(function(){
    if ($('.js-checkbox:checked').length == $('.js-checkbox').length) {
        $("#btn-consent").prop("disabled", false);
    }else {
        $("#btn-consent").prop("disabled", true);
    }
});

チェックボックスを全てクリックしたら、送信ボタンが有効になっていますよね。

コードの意味としてはこう↓

  1. チェックボックスそれぞれに同じクラスをつける
  2. そのクラス名の数と、チェックされたクラス名の数をif文に

順に解説していきます。

➀:チェックボックスそれぞれに同じクラスをつける

まず複数の同意チェックボックスに対して、同じクラス名をつけます。

<div class="form-box__item">
    <input type="checkbox" id="consent1" name="consent" class="js-checkbox">
    <label for="consent1">同意する</label>
</div>
<div class="form-box__item">
    <input type="checkbox" id="consent2" name="consent" class="js-checkbox">
    <label for="consent2">ボタン送信後はいかなる場合でも了承する</label>
</div>

今回でいうと「js-checkbox」ですね。

➁:そのクラス名の数と、チェックされたクラス名の数をif文に

そして重要なのがjQueryのここ↓

if ($('.js-checkbox:checked').length == $('.js-checkbox').length)

これは【もし「js-checkbox」のクラスを持つ要素の数と、チェックがついてる「js-checkbox」の要素の数が同じだったら】という意味。

2つのチェックボックスがあり、2つともチェックが入っていたら~~となります。

つまり同意チェックボックス全てにチェックが入ったら、送信ボタンのdisabled属性がなくなり、有効になるということ。

これで複数チェックボックスがあっても、送信ボタンの切り替えをすることができます!

ちなみにですがフォーム関連の他記事も参考に↓

【簡単】jquery.autokana.jsの使い方【ふりがなを自動入力】 【簡単】ajaxzip3の使い方【郵便番号→住所自動入力】

【jQuery】同意チェックボックスでボタンを有効に切り替え【disabled】:まとめ

  • 「disabled」属性をjQueryを使い付け外しする
  • JavaScriptでも可能
  • 複数チェックボックスがあるときも実装可能
ジト
ジト

お問い合わせフォーム実装の時によく使うので覚えておこう!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA