Bagaimana cara benar-benar mengatur maxlength untuk bidang textarea dalam formulir kontak


11

Saya perlu membatasi pesan teks dari formulir kontak modul inti ke sejumlah karakter.

Inilah faktanya

  1. Formulir API tidak memungkinkan seseorang untuk menetapkan panjang maksimum pada jenis bidang textarea [sementara HTML biasa]

  2. The Maxlength modul, tidak memungkinkan Anda untuk benar-benar mengatur panjang maksimum. Ia mendapatkan panjang maksimalnya dari panjang maksimal bidang, ditentukan pada bagian bidang pengelolaan masing-masing jenis konten

  3. Membuat tipe elemen form baru menggunakan hook_element_info, masih tidak menjamin saya bisa menambahkannya #maxlengthke textarea. Selain itu jika saya berhasil saya perlu mengubah lagi modul formulir kontak untuk mengesampingkan bidang textarea pesan yang sebenarnya dengan milik saya.

Jadi saya bisa mengubahnya dengan jelas dan langsung?

Apa ide terbaik untuk mengubah semua bidang textarea di situs web?

Jawaban:


6

API Formulir tidak memungkinkan untuk menetapkan panjang maksimal pada jenis bidang teks [sementara HTML biasa]

Itu tidak sepenuhnya benar .... HTML5 memperkenalkan properti maxlength untuk textareas, versi sebelumnya tidak memilikinya (lihat https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea ).

Template default yang datang dengan Drupal 7 semuanya menggunakan XHTML, sehingga kurangnya dukungan eksplisit untuk HTML5 masuk akal.

Selama doctype Anda adalah HTML5, ini mungkin akan berfungsi:

$form['element'] = array(
  '#type' => 'textarea',
  '#attributes' => array('maxlength' => 200),
);

Clive Saya benar-benar menemukan solusi yang berfungsi, saya diposting di bawah ini. Terima kasih atas jawaban anda.
drupal_stuff_alter

6

Anda dapat menggunakan modul Maxlength seperti ini, letakkan properti #maxlength dan #maxlength_js pada elemen yang ingin Anda kontrol.

$form['comments'] = array(
  '#type' => 'textarea',
  '#title' => t('Comments'),
  '#maxlength_js' => TRUE,
  '#maxlength' => 1000,
);

4

Pertama saya mendefinisikan bentuk pengaturan, kemudian membuat bentuk kait mengubah:

function contact_form_form_alter(&$form, &$form_state, $form_id) {

  if ($form_id == 'contact_site_form') {
    $maximum_limit = (int) variable_get('contact_form_maxlength', 500);
    if($maximum_limit && is_numeric($maximum_limit)) {
    $form['message']['#title'] = $form['message']['#title'] . t(' (maximum @max characters)', array( '@max' => $maximum_limit));
    $form['message']['#maxlength'] = $maximum_limit ;
    }
  }
}

Ini sepertinya bekerja dengan baik.


Selain itu, Anda dapat menerapkan hook_form_FORM_ID_alter dan menyimpan cek formulir ID, yaitu: contact_form_form_contact_site_form_alter. Agak seteguk sebagai nama fungsi, harus diakui.
Alfred Armstrong

Ide yang bagus. Saya tidak punya kebiasaan ini :-)
drupal_stuff_alter
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.