自定义文本框控件
本文关键字:控件 文本 自定义 | 更新日期: 2023-09-27 17:59:37
我特别需要控制如何在多行文本框(ASP:textbox)中输入一些文本
一开始我以为我只需要JavaScript就可以控制它,但看起来我可以接近,但不是100%我需要的。
现在我想知道我是否需要从头开始写一个控件(从来没有这样做过),或者我是否可以从TextBox继承并能够获得我需要的东西。
要求:
- 多行文本框
- 能够控制行和列
- 希望能够关闭显示为禁用的滚动条在多行文本框上
- 仍然可以使用验证器
- 自动换行
- 最大长度
- 如果我将列设置为26,将行设置为4,则用户应该无法输入超过104个字符(我没想到的部分来了out)
- 即使最大长度不是,用户也不能输入超过4行已达到
4行限制确实是我最大的麻烦。
如果输入:
a
b
c
d
我可以检查有多少个'n
字符。但是,如果您输入:
12345678901234567890123456
7890
c
d
在这里,他们已经包装好了,所以少了一个'n
字符,或者你输入:
这是
已输入的文本
c
d
这里的文本已经换行了,而且你不能只计算'n
字符。
- 按"''n"将字符串拆分为一个数组
- 计算每个数组成员的长度除以26(向下取整,然后加1)
- 对这些数字求和(存储为总数)(但减去1,因为由于最后一个条目,算法计算了太多行)
- 取最后一个数组成员长度mod 26。(存储为len1)
- 留给类型的字符数=104-((总数*26)+len1)
如果你愿意,我可以为你想出一些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>