自定义文本框控件

本文关键字:控件 文本 自定义 | 更新日期: 2023-09-27 17:59:37

我特别需要控制如何在多行文本框(ASP:textbox)中输入一些文本

一开始我以为我只需要JavaScript就可以控制它,但看起来我可以接近,但不是100%我需要的。

现在我想知道我是否需要从头开始写一个控件(从来没有这样做过),或者我是否可以从TextBox继承并能够获得我需要的东西。

要求:

  1. 多行文本框
  2. 能够控制行和列
  3. 希望能够关闭显示为禁用的滚动条在多行文本框上
  4. 仍然可以使用验证器
  5. 自动换行
  6. 最大长度
  7. 如果我将列设置为26,将行设置为4,则用户应该无法输入超过104个字符(我没想到的部分来了out)
  8. 即使最大长度不是,用户也不能输入超过4行已达到

4行限制确实是我最大的麻烦。

如果输入:

a
b
c
d

我可以检查有多少个'n字符。但是,如果您输入:

12345678901234567890123456
7890
c
d

在这里,他们已经包装好了,所以少了一个'n字符,或者你输入:

这是
已输入的文本
c
d

这里的文本已经换行了,而且你不能只计算'n字符。

自定义文本框控件

  1. 按"''n"将字符串拆分为一个数组
  2. 计算每个数组成员的长度除以26(向下取整,然后加1)
  3. 对这些数字求和(存储为总数)(但减去1,因为由于最后一个条目,算法计算了太多行)
  4. 取最后一个数组成员长度mod 26。(存储为len1)
  5. 留给类型的字符数=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>