125naroom / デザインするところ(会社)です。

【jQuery】規約を一番下までスクロールするとボタンが押せる

【jQuery】規約を一番下までスクロールするとボタンが押せる
きのこさん
規約を一番下までスクロールするとボタンが押せるようにしたいのですができますかー?
きのこさん
ふむふむなるほど、よく見かけますねー、活性化ですねー、できますよー。

規約を一番下までスクロールするとボタンが押せる、実装

一番下までスクロールすると、ボタンに付いてるdisabledが外れるように設定します。

See the Pen
【jQuery】規約を一番下までスクロールするとボタンが押せる
by 125naroom (@125naroom)
on CodePen.

コードはこちら

HTML

<section>
  <div class="scroll_box">
    <p>一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。一番下までスクロールするとボタンが押せる。</p>
  </div>
  <form>
    <div class="btnArea">
      <input type="submit" value="" class="check-btn" disabled>
      <a href="https://125naroom.com/web/4208" target="_blank" class="btn_one">ボタン</a>
    </div>
  </form> 
</section>

jQuery

//規約を一番下までスクロールするとボタンが押せる
$(function(){  
  //disabledを設定しておく
  $('[type="checkbox"], .check-btn').prop('disabled', true);
  //一番下までスクロールするとボタンが押せる(ボタンのdisabledが外れる)
  var scrollend = false;
  $('.scroll_box').scroll(function(event){
    if (
      scrollend == false
      && event.target.clientHeight + event.target.scrollTop >= event.target.scrollHeight
    ) {
      $(".check-btn").prop('disabled', false);
      scrollend = true;
    }
  });
});

規約を一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる、実装

少しアレンジしてみます。
一番下までスクロールすると、まずチェックボタンが活性化するようにしてみました。
そしてチェックボックスにチェックが付いたらボタンが押せるようになります。
再確認ですね。

See the Pen
【jQuery】規約を一番下までスクロールするとチェックができるようにする
by 125naroom (@125naroom)
on CodePen.

コードはこちら

HTML

<section>
  <div class="scroll_box">
    <p>一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる。</p>
  </div>
  <form>
    <div>
      <input type="checkbox" id="check1" disabled>
      <label for="check1">ちゃんと読みました。</label>
    </div>
    <div>
      <input type="checkbox" id="check2" disabled>
      <label for="check2">本当にちゃんと読みました。</label>
    </div>
    <div class="btnArea">
      <input type="submit" value="" class="check-btn" disabled>
      <a href="https://125naroom.com/web/4208" target="_blank" class="btn_one">ボタン</a>
    </div>
  </form> 
</section>

jQuery

//規約を一番下までスクロールするとチェックできる、そしてチェックするとボタンが押せる
$(function(){  
  //disabledを設定しておく
  $('[type="checkbox"], .check-btn').prop('disabled', true);
  //一番下までスクロールするとチェックできる(checkboxの#check1のdisabledが外れる)
  var scrollend = false;
  $('.scroll_box').scroll(function(event){
    if (
      scrollend == false
      && event.target.clientHeight + event.target.scrollTop >= event.target.scrollHeight
    ) {
      $("#check1").prop('disabled', false);
      scrollend = true;
    }
  });
  //disabledのイベント解除設定
  var practicableEvent = function(self, target){
    target.prop('disabled', false);
    setTimeout(function(){
      self.prop('disabled', true);
    }, 0);
  }
  //checkboxの#check1をチェックすると、checkboxの#check2がチェックできる
  $("#check1").on({
    "click":function(){
      if(!scrollend) return;
      practicableEvent($(this), $("#check2"));
    },
    "change":function(){
      if(!scrollend) return;
      practicableEvent($(this), $("#check2"));
    }
  });
  //checkboxの#check2をチェックするとボタンが押せる
  $("#check2").on({
    "click":function(){
      practicableEvent($(this), $(".check-btn"));
    },
    "change":function(){
      practicableEvent($(this), $(".check-btn"));
    }
  }); 
});

メモ

jQueryのことで何かわからないことがあればjQueryの日本語リファレンスサイトがあるので一度チェックしてみるのをおすすめします。

jQuery日本語リファレンス

jQuery(英語版)

さいごに

きのこさん
おー、これこれー!
きのこさん
では、コーヒータイムにしましょう

関連記事

【jQuery】チェックボックスにチェックを入れるとボタンが活性化する

おすすめ

Googleさんのおすすめ

Googleさんのおすすめ

デザインの記事

NEWTOWN/グラフィック・Webデザイン
ちょっと思い出しただけ
【CSS】見出しデザインをまとめてみる(左右に線を引くとか)