LoginSignup
10
2

More than 5 years have passed since last update.

Bootstrap4+jQueryでカレンダーを使ってみよう!

Posted at

ども!デザインエンジニアのMasaです。

なんのために共有するのか?

初心者が自走できるようになるまでのあしあとを残すことによって、後から学習する人がどういう道のりをたどればいいのかわかるようにするために書きます!
疑問が解消されたり、不安が少しでも減ったら、左のいいねボタンをポチッとお願いします!

動かすための前提条件

bootstrap4とjQueryとmoment.jsとtempusdominus bootstrap4の合計4つのライブラリをhtml内に記述してあげる必要性がある。

html
<head>
  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.js"></script>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.0-alpha14/js/tempusdominus-bootstrap-4.min.js"></script>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.0-alpha14/css/tempusdominus-bootstrap-4.min.css" />
</head>

bootstrap4のCDNはこちら
https://cccabinet.jpn.org/bootstrap4/getting-started/introduction

jqueryのCDNはこちら
https://code.jquery.com/

moment.jsのCDNはこちら
https://cdnjs.com/libraries/moment.js/2.22.2

tempusdominus bootstrap4のCDNはこちら
https://tempusdominus.github.io/bootstrap-4/Installing/
↑このサイトを忠実に再現すればカレンダーを部分的に利用することができます。
例えば、日付のみ、時間のみ、日付+時間など様々な部品が用意されていて超便利なので

さぁ、カレンダーを使うぞ!

まるごとindex.htmlファイルにでもコピーすれば使うことができます。
いったん、動かしてみたいぞ!という人はコピペでどうぞ!
(bootstrapのグリッドデザインを使っているのでそのあたりはご了承を)

html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>ToDoアプリ</title>
  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.js"></script>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.0-alpha14/js/tempusdominus-bootstrap-4.min.js"></script>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.0-alpha14/css/tempusdominus-bootstrap-4.min.css" />

  <style type="text/css">
  .datepicker-days th.dow:first-child,
  .datepicker-days td:first-child {
    color: #f00;
  }
  .datepicker-days th.dow:last-child,
  .datepicker-days td:last-child {
    color: #00f;
  }
  </style>
</head>
<body>

  <div class="container-fluid text-center">
    <div class="row">
      <div class="col-md-3">
      </div>
      <div class="col-md-6"> <!-- new todo -->
        <form>
          <div class="container">
            <label class="control-label">Deadline</label>
            <div class="form-group">
              <div class="input-group date" id="datetimepicker4" data-target-input="nearest">
                <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker4"/>
                <div class="input-group-append" data-target="#datetimepicker4" data-toggle="datetimepicker">
                  <div class="input-group-text"><i class="fa fa-calendar"></i></div>
                </div>
              </div>
            </div>
            <script type="text/javascript">
            $(function () {
              $('#datetimepicker4').datetimepicker({
                format: 'L'
              });
            });
            </script>
          </div>

          <div class="container">
            <div class="form-group">
              <div class="input-group date" id="datetimepicker3" data-target-input="nearest">
                <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker3"/>
                <div class="input-group-append" data-target="#datetimepicker3" data-toggle="datetimepicker">
                  <div class="input-group-text"><i class="fa fa-clock-o"></i></div>
                </div>
              </div>
            </div>

            <script type="text/javascript">
            $(function () {
              $('#datetimepicker3').datetimepicker({
                format: 'LT'
              });
            });
            </script>

          </div>

        </form>

      </div> <!-- close new todo  -->
      <div class="col-md-3">
      </div>

    </div>   <!--close row-->
  </div>    <!--close container-->

</body>
</html>

最後に

記事ではスラッと書いてるんですが、
結構どツボにはまって1時間くらい「動かーん!」と部屋の中で言ってたりしました。

疑問が解消されたり、不安が少しでも減ったら
左のいいねボタンをポチッとお願いします!

ではではドロン!

処女作:エロ診断メーカー(共同製作:Kei)
https://ero-shindan.herokuapp.com/

Ed.D~Eros Driven Development~
https://storage.googleapis.com/edd-homepage/IntroductionEdD/index.html

参考文献

tempusdominus bootstrap4の存在を教えていただきました。
また、カレンダーのアイコンがうまく表示されない問題を解決するヒントをいただきました。
https://qiita.com/yaju/items/2cbe5e5914c5be08820a

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2