在多行文本框上设置最大字符(可见性允许)
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大小的文件