自定义文本框控件

时间:2011-06-16 22:03:28

标签: c# javascript asp.net

我特别需要控制在多行文本框中输入某些文本的方式(ASP:TextBox)

起初我虽然可以用JavaScript控制它,但看起来我可以接近但不是我需要的100%。

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

要求:

  
      
  1. MultiLine TextBox
  2.   
  3. 能够控制行和列
  4.   
  5. 希望能够关闭显示为已禁用的滚动条   在MultiLine文本框上
  6.   
  7. 仍然可以使用验证器
  8.   
  9. Word Wrap
  10.   
  11. MAXLENGTH
  12.   
  13. 如果我将列设置为26而行设置为4则用户不应该   输入超过104个字符   (这是我没想过的部分   出)
  14.   
  15. 即使最大长度不是,用户也不能输入超过4行   达到。
  16.   

4行限制确实是我遇到麻烦的最大部分。

如果您输入:

  

一个
  b
  ç
  d

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

  

12345678901234567890123456
  7890
  ç
  d

在这里,他们已经包裹,因此只需少一个\n字符,或者输入:

  

这是一段很长的事   已输入的文字
  ç
  d

这里的文字已经被包裹起来了,你不能只计算\n个字符。

1 个答案:

答案 0 :(得分:1)

  1. 将字符串'\ n'拆分为数组。
  2. 计算每个阵列成员的长度除以26(向下舍入然后加1)
  3. 将这些数字相加(存储为总数)(但减去1,因为算法因最后一个条目而计算的行数过多)
  4. 取最后一个数组成员长度为模数26.(存储为len1)
  5. 键入的字符数= 104 - ((总计* 26)+ len1)
  6. 如果您愿意,我可以为您提供一些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>