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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

2回答

3977閲覧

Bootstrap 3 Datepickerで指定した日時をdisableにしたい。

rock_square

総合スコア14

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2018/04/22 13:18

編集2018/04/23 06:32

Bootstrap 3 Datepickerで指定した日時をdisableにしたい。

前提・実現したいこと

Laravel5.5を使って、システム開発を行っています。

日付を入力する箇所が2ヶ所あり(出発時刻、到着時刻)、それぞれに関して入力補助として Bootstrap 3 Datepicker を使用してカレンダー(日付と時間)を出すようにしています。

HTML

1<!-- 出発時刻 --> 2<input id="departure_time" type="text" class="form-control date_departure" name="departure_time" value="" placeholder="yyyy/mm/dd hh:mm" onkeyup="datetime()" > 3 4<!-- 到着時刻 --> 5<input id="arrival_time" type="text" class="form-control date_arrival" name="arrival_time" value="" placeholder="yyyy/mm/dd hh:mm" >

↓全体

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="utf-8"> 5<meta http-equiv="X-UA-Compatible" content="IE=edge"> 6<meta name="viewport" content="width=device-width, initial-scale=1"> 7 8<title>◯◯システム</title> 9 10<!-- Styles --> 11<link href="http://localhost/css/app.css" rel="stylesheet"> 12<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> 13 14<!-- jQuery --> 15<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 16<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 17 18<!-- Bootstrap DateTimePicker --> 19<link rel="stylesheet" type="text/css" media="screen" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" /> 20<link rel="stylesheet" href="http://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/v4.0.0/build/css/bootstrap-datetimepicker.css"> 21 22<script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script> 23<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script> 24<script src="moment-ja.js"></script> 25<script src="http://cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/v4.0.0/src/js/bootstrap-datetimepicker.js"></script> 26</head> 27 28<body> 29 30<div class="container"> 31<div class="row"> 32<div class="col-md-10 col-md-offset-1"> 33<div class="panel panel-default"> 34<div class="panel-heading">フライト追加</div> 35 36<div class="panel-body"> 37</div> 38 39<form class="form-horizontal" id="form_add_flight" name="form_add_flight" role="form" method="POST" action="confirm"> 40<input type="hidden" name="_token" value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"> 41<div id="_csrf_token_" hidden>XXXXXXXXXX</div> 42<div id="_arrival_datetime_url_" hidden>http://localhost/arrival_datetime</div> 43<div id="_departure_datetime_url_" hidden>http://localhost/departure_datetime</div> 44 45<table class="table table-bordered horizontal-th"> 46<tr class="required"> 47<td colspan="2"> 48<div class="form-group"> 49<label for="departure_airport_id" class="col-md-4 control-label">出発空港</label> 50 51<div class="col-md-6"> 52<select id="departure_airport_id" name="departure_airport_id" class="form-control" onChange="datetime('0')" > 53<option value="1" >A空港</option> 54<option value="2" >B空港</option> 55<option value="3" >C空港</option> 56・・・ 57<option value="99" >Y空港</option> 58<option value="100" >Z空港</option> 59</select> 60</div> 61</div> 62</td> 63 64<td colspan="2"> 65<div class="form-group"> 66<label for="arrival_airport_id" class="col-md-4 control-label">到着空港</label> 67 68<div class="col-md-6"> 69<select id="arrival_airport_id" name="arrival_airport_id" class="form-control" onChange="datetime('0')" > 70<option value="1" >A空港</option> 71<option value="2" >B空港</option> 72<option value="3" >C空港</option> 73・・・ 74<option value="99" >Y空港</option> 75<option value="100" >Z空港</option> 76</select> 77</div> 78</div> 79</td> 80</tr> 81 82<tr class="required"> 83<td colspan="2"> 84<div class="form-group"> 85<label for="departure_time" class="col-md-4 control-label">出発日時</label> 86<div class="col-md-6"> 87<!-- 出発時刻 --> 88<input id="departure_time" type="text" class="form-control date_departure" name="departure_time" value="" placeholder="yyyy/mm/dd hh:mm" > 89</div> 90</div> 91</td> 92 93<td colspan="2"> 94<div class="form-group"> 95<label for="arrival_time" class="col-md-4 control-label">到着日時</label> 96<div class="col-md-6"> 97<div class="cal_datetime" id="cal_datetime"> 98<!-- 到着時刻 --> 99<input id="arrival_time" type="text" class="form-control date_arrival" name="arrival_time" value="" placeholder="yyyy/mm/dd hh:mm" > 100</div> 101</div> 102</div> 103</td> 104</tr> 105</table> 106</form> 107 108<table class="table horizontal-th"> 109<tr> 110<td style="padding-left:5px; text-align:center;"> 111<button type="button" class="btn btn-primary" onclick="post()"> 112<i class="fa fa-btn fa-search"></i> 次へ 113</button> 114</td> 115</tr> 116</table> 117</div> 118</div> 119</div> 120</div> 121 122</body> 123</html>

呼び出されるJS側は

JavaScript

1<script> 2$(function () { 3 $('.date_departure').datetimepicker({ 4 locale: 'ja', 5 format : 'YYYY/MM/DD HH:mm', 6 stepping: 15, 7 sideBySide: true, 8 }); 9}); 10 11$(function () { 12 $('.date_arrival').datetimepicker({ 13 locale: 'ja', 14 format : 'YYYY/MM/DD HH:mm', 15 stepping: 15, 16 sideBySide: true, 17 }); 18}); 19</script>

となっています。

出発時刻が入力された場合 datetime() という別のJavaScriptの処理が呼び出され、Ajax にて出発時刻と所要時間から到着時刻が計算され、その値がarrival_timeのフォームに格納されます。

Ajaxでは

Ajax処理

1$.ajax({ 2type: 'POST', 3contentType: false, 4processData: false, 5url: send_url, 6data: formData, 7success: function(data) { 8$('#arrival_time').data("DateTimePicker").date(data); 9$('#arrival_time').data("DateTimePicker").disabledDates(['2018-04-23', '2018-04-24']); 10}, 11error: function(data) { 12alert('エラーが発生しました。'); 13}, 14});

この時、disabledDates で指定した日付について指定不可としているのですが、こちらに時間を加えた日時で指定不可に変更したいと考えています。

試したこと

「$('#arrival_time').data("DateTimePicker").disabledDates(['2018-04-23 10:00', '2018-04-24 13:00']);」としましたが、日付は指定不可(2018-04-23、2018-04-24は指定不可)とこれまで通りで、時間の部分は反映されませんでした。
⇒2018-04-23 10:00、2018-04-24 13:00 とピンポイントで指定不可としたい。

ドキュメント(http://eonasdan.github.io/bootstrap-datetimepicker/Functions/)を確認しましたが、直接指定できる項目は見つかりませんでした。
ただ、もし同様の課題を解決されている方がいらっしゃいましたら、方法をご教示いただければと思います。

補足情報(FW/ツールのバージョンなど)

◆動作環境
・Windows10 Pro 64bit
・Apache2.4
・PHP7.1
・Laravel5.5
・MySQL5.7
・Bootstrap 3 Datepicker
http://eonasdan.github.io/bootstrap-datetimepicker/

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

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

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

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

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

guest

回答2

0

ベストアンサー

オプションのdisabledTimeIntervalsでできますが、まず、バージョンが古いのでこの機能が追加された4.14.30以降に上げなければいけません。
http://eonasdan.github.io/bootstrap-datetimepicker/Changelog/

JavaScript

1$('#arrival_time').data("DateTimePicker").disabledTimeIntervals([[moment('2018-04-23 10:00'), moment('2018-04-24 11:00')]]);

投稿2018/04/24 07:52

x_x

総合スコア13749

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

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

rock_square

2018/04/24 10:15 編集

コメントありがとうございます。 バージョンが古かったため、適用されなかったのですね。 バージョンを上げて、確認してみます。 …最近のバージョンって、CDN対応していないのですね(汗
rock_square

2018/04/24 12:16

バージョンアップ(現時点での最新 4.17.37 にしてみました)した後、所定のコード $('#arrival_time').data("DateTimePicker").disabledTimeIntervals([[moment('2018-04-23 10:00'), moment('2018-04-24 11:00')]]); を追加した所、入力制限を実現することができました。 ⇒上記ですと 2018/4/23 10:00~2018/4/24 11:00 が選択できなくなります。 ありがとうございました。
guest

0

試したわけではないのでドキュメントを読んだ回答で申し訳ないのですが、下記は使えませんでしょうか?

momentが引数なので、うまく日付時間を渡せればいけそうに思います。

投稿2018/04/23 01:45

m.ts10806

総合スコア80850

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

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

rock_square

2018/04/23 04:00

ご回答ありがとうございます。 ↓以下のように実装して試してみました。 $.ajax({ type: 'POST', contentType: false, processData: false, url: send_url, data: formData, success: function(data) { $('#arrival_time').data("DateTimePicker").date(data); $('#arrival_time').data("DateTimePicker").disabledTimeIntervals([[moment('2018-04-23 10:00'), moment('2018-04-23 10:00')], [moment('2018-04-24 11:00'), moment('2018-04-24 11:00')]]); }, error: function(data) { alert('エラーが発生しました。'); }, }); ↓結果ですが 「TypeError: $(...).data(...).disabledTimeIntervals is not a function」というエラーで止まってしまいました。
m.ts10806

2018/04/23 04:08

datetimepicker()のオプションなのでdata属性に対して入れるものではなさそうです。 $('#date_arrival').datetimepicker({ disabledTimeIntervals:[設定値] });
rock_square

2018/04/23 04:39

ご返信ありがとうございます。 > datetimepicker()のオプションなのでdata属性に対して入れるものではなさそうです。 そうなんですね。てっきりFunctionsの項目に入っていたので、functionだと思っていました。 (For example: にはオプション指定の説明書きはありましたが…) 先程の内容を $('#arrival_time').data("DateTimePicker").disabledTimeIntervals([[moment('2018-04-23 10:00'), moment('2018-04-23 10:00')], [moment('2018-04-24 11:00'), moment('2018-04-24 11:00')]]); ↓ $('#arrival_time').datetimepicker({ disabledTimeIntervals: [[moment('2018-04-23 10:00'), moment('2018-04-23 10:00')], [moment('2018-04-24 11:00'), moment('2018-04-24 11:00')]] }); に変更して確認しました。 エラーは発生しなくなりましたが、disabledTimeIntervals で指定した日時が、特に制限がかかる事なく、通常通り選択できる状況です。
m.ts10806

2018/04/23 04:40

ふーむなるほど・・・。 ドキュメントざっと読んだときにはいけそうに思ったのですが、早とちりを失礼しました。 ちょっと私のほうでも簡単に作って確認してみます。
rock_square

2018/04/23 04:47

すいません。お手数おかけします。 私の方でも何か進展がありましたら、投稿させていただきます。 よろしくお願いいたします。
m.ts10806

2018/04/23 05:39

ちなみに該当架所以外のHTMLってどのように組まれていますか? 可能な範囲で周辺のHTMLも追記していただきたいのですが・・・
rock_square

2018/04/23 06:34 編集

↓一部編集しておりますが、以下の通りです(HTMLに限定しています)。 ※本文に転記しました。
m.ts10806

2018/04/23 06:17 編集

あ、コードブロックの関係もあるので、お手数なのですが質問本文に添付していただいた方がありがたいです(他の見ている人もすぐ目に付くので)
rock_square

2018/04/23 06:33

ご返信ありがとうございます。 本文にも転記いたしました。 よろしくお願いいたします。
m.ts10806

2018/04/23 06:44

「ピンポイントで指定不可」なので例で言えば4/24は選択できる ということですよね また、日付が違えば、その時刻は選択できる ですよね
rock_square

2018/04/23 08:43

そうですね。 例えば [moment('2018-04-23 10:00'), moment('2018-04-23 10:00')] なら、2018-04-23 10:00 は指定できませんが、その他の時間帯であれば 2018-04-23 は指定可能。 他の日付であれば、10:00 でも指定は可能…というイメージです。 更に言えば、[moment('2018-04-23 10:00'), moment('2018-04-23 11:00')] であれば、2018-04-23 の 10:00~11:00 で指定不可です。
rock_square

2018/04/24 12:18

どうやら、指定していたバージョンが古かったのが原因だった様です。 色々とご相談にのっていただき、ありがとうございました。
m.ts10806

2018/04/24 20:36

解決できたようで何よりです。 何事も基本は最新を使うのが一番ですね^^;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問