Posted at

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

ども!デザインエンジニアの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