如何在magento中限制管理表单中的字符数

时间:2014-04-16 12:07:20

标签: magento magento-1.7

我在Form.php中有以下代码

$fieldset->addField('desc', 'textarea', array(
          'label'     => Mage::helper('module')->__('Description'),
          'required'  => true,       
          'name'      => 'desc',
      ));

如何限制此文本区域中的字符数?

1 个答案:

答案 0 :(得分:10)

理论上,您应该可以通过向textarea添加maxlength属性来实现这一目标 所以你应该得到这样的东西:

<textarea maxlength="50"></textarea>

但Magento不允许使用maxlength属性 如果您查看Varien_Data_Form_Element_Textarea类(负责渲染textareas的类),您将看到此方法。

public function getHtmlAttributes()
{
    return array('title', 'class', 'style', 'onclick', 'onchange', 'rows', 'cols', 'readonly', 'disabled', 'onkeyup', 'tabindex');
}  

创建元素时,您可以指定这些元素。

第一个选项是扩展此类并在允许的属性中添加maxlength,然后您的列可能如下所示:

$fieldset->addField('desc', 'textarea', array(
      'label'     => Mage::helper('module')->__('Description'),
      'required'  => true,       
      'name'      => 'desc',
      'maxlength' => 50
));

第二个选项是通过一些javascript添加它。

   $fieldset->addField('desc', 'textarea', array(
      'label'     => Mage::helper('module')->__('Description'),
      'required'  => true,       
      'name'      => 'desc',
      'after_element_html' => '<script type="text/javascript">Event.observe(window, "load", function() {$("id_of_textarea_here").setAttribute("maxlength", 50)})</script>'
  ));

第三种选择是在一些限制文本长度的代码上面插入javascript而不是javascript 你可以找到一个example here

最后注意事项:
来自after_element_html的内容将以元素后面的形式显示。所以你基本上可以放任何东西。