フォームAPIを使用してjquery.ui.datepickerウィジェットをフォーム要素に添付できますか?


7

一般的なフォーム要素があります:

$form['date'] = array(
    '#type' => 'textfield',
    '#title' => t( 'Date' ),
);

この要素にjquery ui datepickerを追加したいこと。フォームapiを使用してこれを行う方法はありますか、またはdrupal_add_jsを使用して以下を追加する必要がありますか?

$('#edit-date').datepicker();

それとも、もっと良い方法がありますか?

回答:


4

あなたは使用することができますafter_build含まれている関数を呼び出すためにあなたの形式でdrupal_add_jsを


以前は「#after_build」を使用したことがありませんでしたが、それでうまくいきました。このフォームAPIプロパティを初めて使用する他の人は、$ elementと$ form_stateをパラメーターとして呼び出される関数名の配列を取ります。特定の要素にカスタムjsを追加するのに便利です。私は自分の要素(日付プロジェクト)を定義することも検討しましたが、それはやり過ぎだと判断しました。
子午線

ここでヒントを使用してcovenantdesign.com/blog/…
Joshua Stewardson

4

これに対するはるかに簡単な解決策は、DateおよびDate Popupモジュールをインストールし、次のフォームapi要素を使用して日付ポップアップ要素を即座に取得することです。必要なものを含む余分なjsはありません。

$form['date'] = array(
  '#type' => 'date_popup',
  '#title' => t('Date'),
  '#date_format' => 'd/m/Y',
);

#date_format属性は、日付フィールドの入力形式として使用されるPHP日付形式の文字列を受け入れます。


4

日付のプロジェクトはDATE_POPUPフォーム要素を実装モジュール(date_popup.module)が含まれています。Drupal 6のdate_popup.moduledate_popup_load()関数を定義しましたが、この関数はモジュールのDrupal 7のバージョンには存在せず、Drupalコア関数でもありません。

この関数は、必要なJavaScriptファイルを含めることを行いました。

  $path = drupal_get_path('module', 'date_popup');
  if (module_exists('jquery_ui')) {
    jquery_ui_add('ui.datepicker');
    global $language;
    if ($language->language != 'en') {
      jquery_ui_add("i18n/ui.datepicker-{$language->language}");
    }
  }
  if (variable_get('date_popup_timepicker', 'default') == 'default') {
    drupal_add_js($path . '/lib/jquery.timeentry.pack.js');
  }

Drupal 7バージョンのモジュールに存在する同等の関数は、次のコードを含むdate_popup_add()です。

drupal_add_library('system', 'ui.datepicker');
drupal_add_library('date_popup', 'timeentry');

// Add the wvega-timepicker library if it's available.
$wvega_path = date_popup_get_wvega_path();
if ($wvega_path) {
  drupal_add_js($wvega_path . '/jquery.timepicker.js');
  drupal_add_css($wvega_path . '/jquery.timepicker.css');
} 

その関数は、date_popupフォームフィールドから使用される#process関数であるdate_popup_element_process()から呼び出されます。その関数から実行されたものと同様のコードを含む#process関数を記述し、日付ピッカーを追加するフォームフィールドに添付することができます。


これは、Webフォームにカスタムの日付ピッカーを追加するという私の目的にとって魅力的でした。
RevNoah 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.