【发布时间】:2010-11-25 23:59:51
【问题描述】:
是否可以有一个多行文本框(我使用 asp.net c#),其中输入的最大字符数不能超过可见文本框的大小?
我已将滚动条垂直关闭(溢出:隐藏)。
现在我想要这样说,如果多行文本框显示 100px 高度(或说 5 行),用户输入的内容不能超过文本框的高度?
这一定有一个 JS/JQuery hack 吗?
【问题讨论】:
标签: asp.net jquery textbox textarea
是否可以有一个多行文本框(我使用 asp.net c#),其中输入的最大字符数不能超过可见文本框的大小?
我已将滚动条垂直关闭(溢出:隐藏)。
现在我想要这样说,如果多行文本框显示 100px 高度(或说 5 行),用户输入的内容不能超过文本框的高度?
这一定有一个 JS/JQuery hack 吗?
【问题讨论】:
标签: asp.net jquery textbox textarea
不,这是不可能的。
因为 ASP.NET 文本框最终变成了不支持文本限制的 HTML 文本区域。
当然,你可以用 JavaScript 来做这个技巧,但是关于可见区域,它可能并不那么容易。您将需要以某种方式计算当前正在使用的字体的度量,然后尝试在内存中渲染以查看是否超出了框的限制。在为 Windows 编程时可以使用这样的技巧,但对于网页,这可能是不可能的。
【讨论】:
虽然它最终变成了一个文本区域,但你可以这样做,但它是 hacky。
在 textarea 按键上使用 JQuery,检查值的长度,如果超过阈值,则删除最后一个字符。
就像我说的 hacky。
祝你好运,
丹
【讨论】:
您可以限制文本的最大值。字符如下。
客户端
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();");
【讨论】: