速報

AWS SDK for pandasのIceberg書き込みにSQL注入|Glueの変更権限も点検

CATEGORY

【jQuery】【Datepicker】日付表示部分に要素を追加する

※本ページのリンクにはプロモーションが含まれています。

【jQuery】【Datepicker】日付表示部分に要素を追加する

目次

本記事では、jQueryのDatepickerで日付表示部分に要素を追加する方法をご紹介しています。

jQueryのDatepickerで日付表示部分に要素を追加したいな。良い方法ないかな?

上記の疑問にお答えします。

では、解説していきます。

スポンサーリンク

本記事でやりたいこと

Datepickerの日付表示部分に任意の要素を追加します。追加する要素は何でも良いのですが、本記事では下記画像の日付表示部分(赤枠内)にある赤と青の丸い要素を追加する方法を解説しています。

実際にはと連携して日付部分に予定を表示したり、フラグによってアイコンを表示したりすることになりますが、ここでは部分の日付表示部分に要素を表示するところまでご紹介できればと思います。

準備編

Datepickerを動かすための準備をしていきます。

DatepickerはjQuery上で動作するプラグインです。Datepickerを動作させるために、事前にjQuery本体とjQuery UIのスクリプトファイルを読み込んでおく必要があります。jQuery UIはjQuery上で実装することができるUIがまとまったライブラリです。jQuery UIの中に本記事で使用するDatepickerが含まれています。

動作確認のため、でスクリプトファイルを読み込みます。テスト段階ではCDNで問題ないですが、CDNはリンク切れのリスクがあるため、本番環境で構築する場合はローカルにファイルをダウンロードして読み込むようにしましょう。

<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.6.1.js"></script>
<!-- jQuery UI -->
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>

上記スクリプトを読み込み、HTMLに下記を追加します。

<div id="datepicker"></div>

実行するとDatepickerが表示されます。

See the Pen Untitled by ryohei (@intotheprogram) on CodePen.

以上でDatepickerを動かすための準備は完了です。次項では実際にDatepickerの日付表示部分に要素を追加していきます。

スポンサーリンク

日付表示部分に要素を追加する

下記は日付表示部分に要素を追加するスクリプトです。HTMLは前項のものを使用しています。

jQuery

//日付表示部分に要素を追加する関数
const addElements = ()=>{
    //td要素の末尾にdiv要素を追加
    $('.ui-datepicker-calendar tbody tr td').each(function() {
        $(this).append('<div>');
    });
    
    //icon--blue内のdiv要素の末尾に要素を追加
    $('.icon--blue').each(function() {
        $(this).find('div').append('<span class="icon icon--blue"></span>');
    });
    
    //icon--red内のdiv要素の末尾に要素を追加
    $('.icon--red').each(function() {
        $(this).find('div').append('<span class="icon icon--red"></span>');
    });
}

//Datepicker初期化
$("#datepicker").datepicker({
    dateFormat: 'yy-mm-dd',
    //日付表示後に発生するイベント
    beforeShowDay: ()=>{

        let addClassName = '';
        addClassName += 'icon--blue ';
        addClassName += 'icon--red ';

        //日付のtd要素にaddClassNameのclassを追加する
        return [true, addClassName];
    },
    //月切替時に発生するイベント
    onChangeMonthYear: ()=>{
        setTimeout(addElements, 0);
    },
    //日付選択時に発生するイベント
    onSelect: ()=>{
        setTimeout(addElements, 0);
    }
});

//読み込み時に関数実行
addElements();

実行結果は下記の通りです。日付表示部分に青色と赤色の要素が追加されています。

実行結果

See the Pen Untitled by ryohei (@intotheprogram) on CodePen.

補足

上記スクリプトでは、下記イベント発生時にsetTimeoutでaddElements関数を実行しています。

  • onChangeMonthYear
  • onSelect

理由としては、月切替や日付選択のイベントが発生すると、Datepickerが再描画されるため、再描画の後に再度addElements関数を実行して要素を追加しています。軽い処理であれば問題なさそうですが、多少なりとも端末に負荷がかかるため、処理内容によっては代替案を検討した方が良いかもしれませんね。

最後に

本記事では、Datepickerの日付表示部分に力技で要素を追加しました。Datepickerのドキュメントを読んだ限りでは要素を追加するプロパティやメソッドは用意されていないようでしたが、もう少しスマートに実現する方法はありそうな気がしています。他に良い案があれば追記する形でご紹介できればと思います!

以上、jQueryのDatepickerで日付表示部分に要素を追加する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク

CDN

世界各地のサーバーにWebサイトのファイルを複製して置き、利用者に近いサーバーから配信する仕組み。表示の高速化や負荷の分散に使う。

詳しく見る

フロントエンド

Webサイトやアプリのうち、利用者が直接目にして操作する画面の部分。HTML・CSS・JavaScriptなどで作る。

詳しく見る

バックエンド

Webサービスなどで、サーバー側でデータの処理や保存を担う部分。利用者の画面を担うフロントエンドと対になる言葉。

詳しく見る