【问题标题】:maxLength property not preventing character entry into an ExtJS MessageBox.prompt()maxLength 属性不会阻止字符进入 ExtJS MessageBox.prompt()
【发布时间】:2014-03-31 19:10:53
【问题描述】:

我在单击时显示提示,我希望能够限制用户可以输入的字符数。在 extjs 文档中,我找到了有关 maxLength 属性的信息,听起来确实如此我想要什么。我想如果我将 maxLength 设置为我想要的字符限制,extjs 控件会自动限制我的字符数。到目前为止情况并非如此,但它似乎确实在以某种方式验证输入,因为当超过 maxLength 限制时,它以红色勾勒出文本框。这是我当前的代码:

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 学校链接以获取引用)。

【问题讨论】:

  • 你必须使用自定义 JS;文本区域不遵守 maxlength 属性

标签: javascript html extjs extjs4.2


【解决方案1】:

从 ExtJS 4 开始,您可以将 textArea.enforceMaxLength 设置为 true 以防止用户输入或粘贴超过 maxLength 的字符。它也适用于 IE8。

【讨论】:

    【解决方案2】:

    使用 textfield 的 inputEl 设置 maxLength,fiddle:https://fiddle.sencha.com/#fiddle/3vg

    【讨论】:

    • 起初我确信这是我想要的解决方案,但由于某种原因它对我不起作用!我正在使用两个代码库,一个用于移动设备,一个用于桌面。对于移动设备,我在尝试访问 msgbox.textField.enforceMaxLength 时收到错误消息,说 enforceMaxLength 不是 textField 上的属性。对于桌面,我没有收到任何错误,但我也没有遇到字符限制。一旦我达到字符数限制,我很高兴让我继续打字。我很困惑。一切都告诉我这应该有效,但事实并非如此。有什么想法吗?
    • 我之前关于移动行为的评论可能是错误的。我再次查看,当我尝试访问 textField 时,似乎 msgbox 正在返回 undefined。移动必须有所不同。仍然不确定为什么它不能在桌面上运行!
    • 想跟进。这对我不起作用的原因是输入字段的底层标记是 html <textarea>。就像上面的评论所说, textarea 标签不支持最大长度。它使用的是文本区域,因为我指定要提示为多行。为了实现这一点,extjs 使用 textarea 而不是普通的输入标签。因此问题。仍然不清楚为什么这在移动设备上不起作用..
    • 设置 textArea 的 inputEl 的 maxWidth 确实有效;更新了小提琴(多行设置为 true,maxWidth 设置为 textArea)。虽然不确定移动设备..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多