我特别需要控制在多行文本框中输入某些文本的方式(ASP:TextBox)
起初我虽然可以用JavaScript控制它,但看起来我可以接近但不是我需要的100%。
现在我想知道我是否需要从头开始编写控件(从未这样做过),或者我是否可以从TextBox继承并能够得到我需要的东西。
要求:
- MultiLine TextBox
- 能够控制行和列
- 希望能够关闭显示为已禁用的滚动条 在MultiLine文本框上
- 仍然可以使用验证器
- Word Wrap
- MAXLENGTH
- 如果我将列设置为26而行设置为4则用户不应该 输入超过104个字符 (这是我没想过的部分 出)
- 即使最大长度不是,用户也不能输入超过4行 达到。
醇>
4行限制确实是我遇到麻烦的最大部分。
如果您输入:
一个
b
ç
d
我可以查看有多少\n
个字符。但是,如果您输入:
12345678901234567890123456
7890
ç
d
在这里,他们已经包裹,因此只需少一个\n
字符,或者输入:
这是一段很长的事 已输入的文字
ç
d
这里的文字已经被包裹起来了,你不能只计算\n
个字符。
答案 0 :(得分:1)
如果您愿意,我可以为您提供一些javascript,但是您是否希望显示错误消息,修剪文本或阻止输入(您对切割+粘贴做了什么?)
示例页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Page</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" language="javascript"
type="text/javascript"></script>
</head>
<body>
<script language="javascript" type="text/javascript">
function validateTextArea(text) {
var myText = text.val();
var myArray = text.val().split("\n");
var rowcount = myArray.length;
for (i = 0; i < myArray.length; i++) {
rowcount += myArray[i].length / 26;
}
rowcount -= 1;
var len1 = myArray[myArray.length - 1].length % 26;
var charsleft = 104 - ((rowcount * 26) + len1);
if (charsleft < 0) alert("TOO LONG!");
}
</script>
<textarea rows="4" cols="26" id="txt"></textarea>
<button onclick='validateTextArea($("#txt"))'>Do Validate</button>
</body>
</html>