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

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

新規登録して質問してみよう
ただいま回答率
85.50%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

2152閲覧

fullcalendarに関するクリック及び過去の日付について

rumi

総合スコア46

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2017/08/22 13:25

###前提・実現したいこと
Jqueryのfullcalendarに関する作業をしています。
カレンダーに以下の2点を反映したいです。
①日付をクリックすると色がつく
②過去の日付はクリックできない
ご存知の方がいらっしゃいましたらご教示頂けると幸いです。

###発生している問題・エラーメッセージ
①、②の片方のコードだけ残すと、反映されているので、単独では実装できていると思います。2つ同時に実装したい場合、下記のコードだとうまくいきません

###該当のソースコード

<Javascript> $('#calendar').fullCalendar ({dayClick: function(date) {if($(this).hasClass("clicked")){ // クリックされた要素がclickedクラスだったら $(this).removeClass("clicked");} else{$(this).addClass("clicked");}}}); $('#calendar').fullcalendar ({viewRender: function(currentView){ var minDate = moment(), maxDate = moment().add(12,'months'); // Past if (minDate >= currentView.start && minDate <= currentView.end) { $(".fc-prev-button").prop('disabled', true); $(".fc-prev-button").addClass('fc-state-disabled'); } else { $(".fc-prev-button").removeClass('fc-state-disabled'); $(".fc-prev-button").prop('disabled', false); } // Future if (maxDate >= currentView.start && maxDate <= currentView.end) { $(".fc-next-button").prop('disabled', true); $(".fc-next-button").addClass('fc-state-disabled'); } else { $(".fc-next-button").removeClass('fc-state-disabled'); $(".fc-next-button").prop('disabled', false); }}}); <HTML> <script type="text/javascript" src="jsファイルのパス"></script>

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

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

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

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

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

guest

回答2

0

ベストアンサー

以下のように行ってみてはいかがでしょうか?

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>タイトル</title> 6 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.css"> 7 <style type="text/css"> 8 .clicked { 9 background-color: #a9ff3a !important; 10 } 11 </style> 12</head> 13<body> 14<div id="calendar"></div> 15<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 16<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 17<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.js"></script> 18<script> 19 $("#calendar").fullCalendar({ 20 dayClick: function (date) { 21 if ($(this).hasClass("clicked")) { // クリックされた要素がclickedクラスだったら 22 $(this).removeClass("clicked"); 23 } 24 else { 25 $(this).addClass("clicked"); 26 } 27 }, 28 viewRender: function (currentView) { 29 var minDate = moment(), 30 maxDate = moment().add(12, "months"); 31 // Past 32 if (minDate >= currentView.start && minDate <= currentView.end) { 33 $(".fc-prev-button").prop("disabled", true); 34 $(".fc-prev-button").addClass("fc-state-disabled"); 35 } 36 else { 37 $(".fc-prev-button").removeClass("fc-state-disabled"); 38 $(".fc-prev-button").prop("disabled", false); 39 } 40 // Future 41 if (maxDate >= currentView.start && maxDate <= currentView.end) { 42 $(".fc-next-button").prop("disabled", true); 43 $(".fc-next-button").addClass("fc-state-disabled"); 44 } else { 45 $(".fc-next-button").removeClass("fc-state-disabled"); 46 $(".fc-next-button").prop("disabled", false); 47 } 48 } 49 }); 50</script> 51</body> 52</html>

投稿2017/08/22 14:18

編集2017/08/22 14:22
s8_chu

総合スコア14731

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

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

rumi

2017/08/22 14:27

ありがとうございます。 コードを試してみましたが、「②過去の日付はクリックできない」は反映されていますが、「①日付をクリックすると色がつく」は反映されていませんでした。理想は①、②両方が実現できている状態になります。
rumi

2017/08/23 13:07 編集

ありがとうございます。いただいた内容で確認できました。また、過去の日付はグレーアウト及びクリックできない形にしたかったので、以下を実装いたしました。希望通りのものができて大変感謝です。 dayRender: function (date, cell) { var today = new Date(); var end = new Date(); end.setDate(today.getDate()-1); if( date < end) { cell.css("background-color", "lightgrey") } // this is for previous date }, dayClick: function (date) { var today = new Date(); var end = new Date(); end.setDate(today.getDate()-1); if ((date > end) && $(this).hasClass("clicked")) { // クリックされた要素がclickedクラスだったら $(this).removeClass("clicked"); } else {(date > end) && $(this).addClass("clicked"); } },
guest

0

こういうことでしょうか。

JavaScript

1$('#calendar').fullCalendar({ 2 dayClick: function(date) { 3 if ($(this).hasClass('clicked')) { // クリックされた要素がclickedクラスだったら 4 $(this).removeClass('clicked'); 5 } else { 6 $(this).addClass('clicked'); 7 } 8 }, 9 viewRender: function(currentView) { 10 var minDate = moment(), 11 maxDate = moment().add(12, 'months'); 12 // Past 13 if (minDate >= currentView.start && minDate <= currentView.end) { 14 $('.fc-prev-button').prop('disabled', true); 15 $('.fc-prev-button').addClass('fc-state-disabled'); 16 } else { 17 $('.fc-prev-button').removeClass('fc-state-disabled'); 18 $('.fc-prev-button').prop('disabled', false); 19 } 20 // Future 21 if (maxDate >= currentView.start && maxDate <= currentView.end) { 22 $('.fc-next-button').prop('disabled', true); 23 $('.fc-next-button').addClass('fc-state-disabled'); 24 } else { 25 $('.fc-next-button').removeClass('fc-state-disabled'); 26 $('.fc-next-button').prop('disabled', false); 27 } 28 } 29}); // 未テスト

(追記)※ teratailの貼り付けバグのため修正。

投稿2017/08/22 14:08

編集2017/08/22 14:20
kei344

総合スコア69364

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

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

rumi

2017/08/22 14:29

ありがとうございます。 コードを試してみましたが、「②過去の日付はクリックできない」は反映されていますが、「①日付をクリックすると色がつく」は反映されていませんでした。理想は①、②両方が実現できている状態になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問