SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

AngularJSアプリ開発を支援する便利モジュール

AngularJSアプリで日付/時刻を入力するライブラリ - UI Bootstrap(Datepicker/Timepicker)

AngularJSアプリ開発を支援する便利モジュール(13)

  • X ポスト
  • このエントリーをはてなブックマークに追加

日付ピッカーの表示をカスタマイズする

 日付ピッカーの表示は、uib-datepicker-popupディレクティブ配下でdatepicker-options属性を指定することで、カスタマイズすることもできます。datepicker-options属性は「オプション名: 値」のハッシュ形式で指定できます。設定可能なオプションは、以下のとおりです。

datepicker-options属性で利用できる主なプロパティ
分類 プロパティ 概要 デフォルト値
基本 initDate ng-model値が指定されない場合の初期値
datepickerMode カレンダーの表示モード(year/month/day) day
startingDay 週の始まりの曜日(0:日~6:土) 0
minDate 選択可能な日付の最小値
maxDate 選択可能な日付の最大値
表示 minMode 表示モードの下限 day
maxMode 表示モードの上限 year
formatDay 日の形式 dd
formatMonth 月の形式 MMMM
formatYear 年の形式 yyyy
formatDayHeader 週ヘッダーの形式 EEE
formatDayTitle 日付を選択する際のタイトル形式 MMMM yyyy
formatMonthTitle 月を選択するときのタイトル形式 yyyy
その他 dateDisabled 選択できない日付
customClass 特定の日付に適用するスタイル

 たとえば以下は、先ほどのサンプルを修正して、日付を選択する際のタイトル形式を「yyyy年MM月」に、表示モードの上限をmonth(月選択)までとしています。カレンダーを日本語表記した場合、実質、formatDayTitleプロパティは必須です。さもないと「5月 2016」のような表記になってしまうからです。

リスト3 date.html
<input id="date" type="text" ng-model="current"
  ng-focus="onopen($event)"
  uib-datepicker-popup="yyyy-MM-dd" is-open="opened"
  current-text="今日" clear-text="クリア" close-text="閉じる"
  datepicker-options="options" />
リスト4 date.js
angular.module('myApp', [ 'ui.bootstrap' ])
  .controller('MyController', ['$scope', function($scope) {
    $scope.current = new Date();
    $scope.options = {
      formatDayTitle: "yyyy年MM月",
      maxMode: "month"
    }
    ...中略...
  }]);
月別カレンダーのタイトルが日本語形式に変更された
月別カレンダーのタイトルが日本語形式に変更された

 確かに、日付選択時のタイトルが変更されていること、年選択画面に移動できないことが確認できるはずです。

ボタンからカレンダーを表示する

 もちろん、イベントリスナーの紐付けを振り替えてやれば、テキストボックスへのフォーカスではなく、ボタンのクリックによってカレンダーを表示させることもできます。

 以下には、修正したコードについてのみ掲載します。

リスト5 date.html
<div class="col-md-2">
  <label for="date">日付:</label>
  <p class="input-group">
    <input id="date" name="date" type="text" class="form-control"
      ng-model="current" uib-datepicker-popup="yyyy-MM-dd" is-open="opened"
      current-text="今日" clear-text="クリア" close-text="閉じる"
      datepicker-options="options" />
    <span class="input-group-btn">
      <button type="button" class="btn btn-default" ng-click="onopen($event)">
        <i class="glyphicon glyphicon-calendar"></i></button>
    </span>
  </p>
</div>
ボタンからカレンダーをポップアップ
ボタンからカレンダーをポップアップ

 先ほどの例では、テキストボックスにng-focus属性で紐づけていたリスナーを、ボタンのng-click属性で宣言するだけです。

 ボタンに適用しているカレンダーのアイコンは、Bootstrap標準で提供されているものです。Bootstrapでは、よく利用するアイコンをあまた提供していますので、どんなものがあるのか、チェックしておくと良いでしょう。

Bootstrap標準のアイコン
Bootstrap標準のアイコン(http://getbootstrap.com/components/

 Bootstrapによるアイコンボタンについては、「Bootstrapで業務Webアプリのカッコいい入力フォームを作る」などの記事も参考にしてください。

次のページ
時刻入力ボックスを実装する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
AngularJSアプリ開発を支援する便利モジュール連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト(ウイングスプロジェクト)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9371 2016/04/25 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング