0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ドラムロールのタイムピッカー「pickerjs」を複数箇所で使用できるようにする

Last updated at Posted at 2020-12-10

デモ

実装

普通にjqueryのeachでぶん回すだけです

  var target = ".time";
  $(target).each(function(){
    var id = $(this).attr("id");
    new Picker(document.getElementById(id));
  });

注意

作者は複数箇所での使用はサポートしていないと言っています。
Gitのリポジトリがアーカイブにされてて追記できない状態だったので、
ここに書くことにしました。

とりあえず、できましたよっていう報告だけ。

おまけ

ドラムロールで選択した値を使って色々したいとか、あると思います。
pickイベントを使うことで、値を拾うことができます

このライブラリの情報が少ないのでソースコード全文掲載します
※動かすにはjQueryとmoment.jsが必要です


function TimePicker()
{
  var target = '.time';

  var now = moment();
  var dateFormat = {
    zone   : 'Asia/Tokyo',
    year   : now.year(),
    month  : now.month(),
    day    : now.day(),
    hour   : now.hour(),
    minute : 0,
    second : 0
  };

  var date = moment().set(dateFormat);

  $(target).each(function(){
    var self = this;
    var id = $(self).attr('id');

    var picker = new Picker(document.getElementById(id), {
      format: 'HH:mm',
      controls: true,
      headers: true,
      date : new Date(date),
      increment: {
        minute : 15
      },
      text: {
        title: '<span>時間を選択してください</span>'
      },
      pick(event) { // OKボタンを押した時に発火
        var dt = picker.getDate();
        var momentInstance = moment(dt);
        var time = momentInstance.format("HH:mm");

        console.log(time);

        // なんかdiv要素書き替えるとかそういうの
        $(self).text(time);
      }
    });
  })
}

new TimePicker();

さらにおまけ

ヘッダーに入るテキストには、HTMLタグが使用できます。
HTMLタグが使用できるということは、クリックイベントを仕込むことが出来るということです。
例えば、ヘッダーにボタン要素を設置して、クリックしたら任意のテキストを設定するといったことは、次のようなやり方で出来ます。
(もっと良い方法があったら誰か教えてください)

    $(target).each(function(){
      var self = this;
      var id = $(self).attr('id');

      var picker = new Picker(document.getElementById(id), {
        // その他のオプション値は省略します。↑のソースコードを参考にしてください
        text: {
          title: '<span>時間を選択してください</span> <button type="button" class="btn-no-return">NR(直帰)</button>'
        },
        show(event){ // モーダルが開き始めた時に発火
          //
        },
        shown(event){ // モーダルが開き終わった時に発火
          $(self).addClass("active-cell"); // 直帰ボタンイベント用
        },
        hide(event){ // モーダルが閉じ始めた時に発火
          //
        },
        hidden(event){ // モーダルが閉じ終わった時に発火
          $(self).removeClass("active-cell"); // 直帰ボタンイベント用
        },
        pick(event){ // OKボタンを押した時に発火
          var dt = picker.getDate();
          var momentInstance = moment(dt);
          var time = momentInstance.format("HH:mm");
          console.log(time);

          // なんかdiv要素書き替えるとかそういうの
          $(self).text(time);
        }
      });

      // 直帰ボタンを押した時
      var btnNR = '.btn-no-return';
      $(btnNR).click(function(){
        $('.active-cell').text("NR");
        picker.hide();
      })
    })
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?