it-swarm-vi.com

Tôi có thể đính kèm tiện ích jquery.ui.datepicker vào phần tử biểu mẫu bằng biểu mẫu api không?

Tôi có một yếu tố hình thức chung:

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

Rằng tôi muốn thêm datepicker jquery vào yếu tố này. Có cách nào để thực hiện việc này thông qua biểu mẫu api không, hoặc tôi có phải thêm phần sau bằng cách sử dụng drupal_add_js:

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

Hoặc có cách nào khác, thậm chí tốt hơn?

7
meriial

Bạn có thể sử dụng after_build trong biểu mẫu của mình để gọi một hàm có chứa drupal_add_js

4
digital

Một giải pháp dễ dàng hơn nhiều cho việc này là cài đặt các mô-đun Ngày và Ngày Popup và sử dụng phần tử api mẫu sau để lấy ngay phần tử bật lên ngày. Không có js thêm bao gồm cần thiết.

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

Thuộc tính #date_format chấp nhận một chuỗi Ngày PHP chuỗi được định dạng được sử dụng làm định dạng đầu vào cho trường ngày.

4
masterchief

Dự án Ngày chứa mô-đun (date_popup.module) thực hiện phần tử biểu mẫu date_popup. date_popup.module for Drupal 6 đã xác định hàm date_popup_load () , nhưng hàm không có trong phiên bản cho Drupal 7 của mô-đun, cũng không phải là hàm Drupal.

Những gì chức năng đã làm là bao gồm các tệp JavaScript cần thiết.

  $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');
  }

Hàm tương đương có trong phiên bản Drupal 7 của mô-đun là date_popup_add () , chứa mã sau đây.

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');
} 

Hàm đó được gọi từ date_popup_element_ process () , đây là hàm # process được sử dụng từ trường biểu mẫu date_popup. Bạn có thể viết một hàm # process chứa mã tương tự như hàm được thực thi từ hàm đó và đính kèm nó vào trường biểu mẫu mà bạn muốn thêm bộ chọn ngày.

4
kiamlaluno