在多行文本框上设置最大字符(可见性允许)

Posted

技术标签:

【中文标题】在多行文本框上设置最大字符(可见性允许)【英文标题】:Set max char (as visibility allows) on multiline textbox 【发布时间】:2010-11-25 23:59:51 【问题描述】:

是否可以有一个多行文本框(我使用 asp.net c#),其中输入的最大字符数不能超过可见文本框的大小?

我已将滚动条垂直关闭(溢出:隐藏)。

现在我想要这样说,如果多行文本框显示 100px 高度(或说 5 行),用户输入的内容不能超过文本框的高度?

这一定有一个 JS/JQuery hack 吗?

【问题讨论】:

【参考方案1】:

不,这是不可能的。

因为 ASP.NET 文本框最终变成了不支持文本限制的 html 文本区域。

当然,你可以用 javascript 来做这个技巧,但是关于可见区域,它可能并不那么容易。您将需要以某种方式计算当前正在使用的字体的度量,然后尝试在内存中渲染以查看是否超出了框的限制。在为 Windows 编程时可以使用这样的技巧,但对于网页,这可能是不可能的。

【讨论】:

【参考方案2】:

虽然它最终变成了一个文本区域,但你可以这样做,但它是 hacky。

在 textarea 按键上使用 JQuery,检查值的长度,如果超过阈值,则删除最后一个字符。

就像我说的 hacky。

祝你好运,

【讨论】:

这种方式几乎是不可能的,因为某些字符与其他字符不同(例如 m 大于 l),因此无法准确地将可见的可键入文本框作为基于字符数的最大长度。不过还是谢谢。【参考方案3】:

您可以限制文本的最大值。字符如下。

客户端

function ValidateLength()

    if(document.forms[0].txtFlightRemarks.value.length > MAX_LENGTH)    
               
        document.forms[0].txtFlightRemarks.value = document.forms[0].txtFlightRemarks.value.substring(0,MAX_LENGTH);
        document.forms[0].txtFlightRemarks.focus();
        return false;
        
 

服务器端(Page_Load):将 onchange 和 onkeyup 事件附加到所需的 textarea。

txtFlightRemarks.Attributes.Add("onchange", "ValidateLength();");
txtFlightRemarks.Attributes.Add("onKeyUp", "ValidateLength();"); 

【讨论】:

不错的尝试,但这不是我想要的。

以上是关于在多行文本框上设置最大字符(可见性允许)的主要内容,如果未能解决你的问题,请参考以下文章

MFC的Dialogbox多行文本框(CEdit)有最大字符限制,默认最大显示长度是?怎么实现显示160KB大小的文件

如何设置绑定到文本框的标签的可见性?

AS3.0中影片剪辑元件嵌套了个动态文本框,怎样才能在文本框上也能显示手型?

jQuery在文本框上设置然后只读属性

将焦点设置在 xaml wpf 中的文本框上

文本框的可见性取决于组合框的值