कैसे वास्तव में संपर्क रूप में textarea क्षेत्र के लिए एक अधिकतम गति निर्धारित करने के लिए


11

मुझे मुख्य मॉड्यूल संपर्क फ़ॉर्म के टेक्स्टारिया संदेश को वर्णों की एक निश्चित संख्या तक सीमित करने की आवश्यकता है।

यहाँ तथ्य हैं

  1. प्रपत्र API किसी को textarea फ़ील्ड प्रकारों पर अधिकतम गति सेट करने की अनुमति नहीं देता है [जबकि सादे HTML करता है]

  2. MaxLength मॉड्यूल, आप वास्तव में एक अधिकतम लंबाई निर्धारित करने की अनुमति नहीं देता है। यह प्रत्येक सामग्री प्रकार के प्रबंधन क्षेत्र खंड पर परिभाषित क्षेत्र की अधिकतम लंबाई से इसकी अधिकतम लंबाई प्राप्त करता है

  3. एक नया फॉर्म एलिमेंट टाइप बनाते हुए हुक_लेमेंट_इन्फो का उपयोग करते हुए, फिर भी जुरेनी नहीं करता है कि मैं #maxlengthटेक्स्टरी में जोड़ सकता हूं । इसके अलावा अगर मैं सफल होता हूं तो मुझे वास्तविक संदेश टेक्स्टारिया फ़ील्ड को खदान से हटाने के लिए संपर्क फ़ॉर्म मॉड्यूल को फिर से बदलना होगा।

तो क्या मैं इसे सीधा और सीधा बदल सकता हूं?

वेबसाइट के सभी textarea क्षेत्रों को बदलने के लिए सबसे अच्छा विचार क्या है?

जवाबों:


6

प्रपत्र API textarea फ़ील्ड प्रकारों पर अधिकतम गति सेट करने की अनुमति नहीं देता है [जबकि सादे HTML करता है]

यह कड़ाई से सच नहीं है .... एचटीएमएल 5 ने टेक्स्टारिस के लिए एक अधिकतम गति संपत्ति पेश की, पिछले संस्करणों में यह नहीं है (देखें https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea )।

Drupal 7 के साथ आने वाले डिफ़ॉल्ट टेम्प्लेट सभी XHTML का उपयोग करते हैं, इसलिए HTML5 के लिए स्पष्ट समर्थन की कमी सही अर्थ बनाती है।

जब तक आपके doctype है एचटीएमएल 5, यह शायद काम करेगा:

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

क्लाइव मुझे वास्तव में एक काम करने वाला समाधान मिला, मैंने इसे नीचे पोस्ट किया। आपके उत्तर के लिए धन्यवाद।
drupal_stuff_alter

6

आप इस तरह से Maxlength मॉड्यूल का उपयोग कर सकते हैं , दोनों #maxlength और #maxlength_js गुण उन तत्वों पर डालें जिन्हें आप नियंत्रित करना चाहते हैं।

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

4

सबसे पहले मैंने एक सेटिंग फॉर्म को परिभाषित किया, फिर एक हुक फॉर्म को बदल दिया:

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

यह ठीक काम करने लगता है।


एक तरफ के रूप में, आप hook_form_FORM_ID_alter को लागू कर सकते हैं और फ़ॉर्म ID चेक को सहेज सकते हैं, अर्थात: contact_form_form_contact_site_form_alter। एक मुंह के बिट के रूप में एक समारोह का नाम, माना जाता है।
अल्फ्रेड आर्मस्ट्रांग

यह एक लाजवाब विचार है। मेरी यह आदत नहीं है :-)
drupal_stuff_alter
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.