我在Form.php中有以下代码
$fieldset->addField('desc', 'textarea', array(
'label' => Mage::helper('module')->__('Description'),
'required' => true,
'name' => 'desc',
));
如何限制此文本区域中的字符数?
答案 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
的内容将以元素后面的形式显示。所以你基本上可以放任何东西。