我在单击时显示一个提示,我希望能够限制用户可以键入的字符数。在extjs文档中,我找到了有关maxLength属性的信息,听起来这正是我想要的。我想,如果我将maxLength设置为我想要的字符限制,extjs控件会自动限制我的字符数。到目前为止,情况并非如此,但它似乎在某种程度上验证输入,因为当超过maxLengh限制时,它以红色勾勒出文本框。这是我当前的代码:
var prompt, textArea;
prompt = Ext.MessageBox.prompt("Hello!", "Hint");
textArea = prompt.down('textarea');
textArea.maxLength = 140;
唉,这并不能阻止用户输入超过140个字符。
有人知道如何限制这样的MessageBox中的字符数吗?或者有人能告诉我为什么maxLength没有按我预期的方式工作吗?
谢谢
--编辑--
正如newmount所指出的,正确的解决方案似乎是在textarea标记上设置maxLength属性。以下是一个w3学校链接到一个示例:http://www.w3schools.com/tags/att_textarea_maxlength.asp
我的问题是选择正确的标签。对于ExtJS中的文本区域,如下所示:
// true denotes multiline and causes Ext to use textarea tag for input
var prompt = Ext.MessageBox.prompt("Hello!", "Hint", "", "", true);
prompt.textArea.inputEl.set({
maxLength: 140
});
似乎一半的工作是在生成的标记中选择正确的DOM元素。希望这对将来的人有帮助!
**注意:**Opera或IE9及更早版本不支持maxLength属性(请参阅w3 schools链接以获取引用)。
3条答案
按热度按时间lg40wkob1#
从ExtJS 4开始,您可以设置textArea。将maxLength强制设置为true,以防止用户键入或粘贴超过maxLength个字符。它也适用于IE8。
neekobn82#
使用textfield的inputEl设置maxLength,fiddle:https://fiddle.sencha.com/#fiddle/3vg
14ifxucb3#
1.在extjs代码中添加enforceMaxLength。
{enforceMaxLength:true,maxLength:140}