代码之家  ›  专栏  ›  技术社区  ›  waqasahmed

在多行文本框上设置最大字符数(如果可见性允许)

  •  1
  • waqasahmed  · 技术社区  · 15 年前

    是否可以有一个多行文本框(IM使用ASP.NET C),其中输入的最大字符数不能超过可见文本框的大小?

    我已垂直删除滚动条(溢出:隐藏)。

    现在我想这样说,如果多行文本框显示say 100px height(或say 5 rows),那么用户不能键入超过文本框高度的内容?

    一定有JS/JQuery黑客?

    3 回复  |  直到 15 年前
        1
  •  1
  •   user151323    15 年前

    不,这是不可能的。

    因为ASP.NET文本框最终会变成不支持文本限制的HTML文本区域。

    当然,您可以用JavaScript来实现这一技巧,但是对于可见区域来说,这并不容易。您需要以某种方式计算当前使用字体的度量,然后尝试在内存中呈现,以查看是否超出了框的限制。在为Windows编程时,可以使用这种技巧,但对于网页,这可能是不可能的。

        2
  •  0
  •   Daniel Elliott    15 年前

    虽然它最终会变成一个文本区,你可以这样做,但它是黑客。

    使用jquery在textaarekeypress上,检查值的长度,如果超过阈值,则删除最后一个字符。

    就像我说的哈奇。

    祝你好运,

        3
  •  0
  •   Ahmed Atia    15 年前

    您可以按以下方式限制文本最大字符数。

    客户端

    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;
        }    
    } 
    

    服务器端 (页面加载):将onchange和onkeyup事件附加到所需的文本区域。

    txtFlightRemarks.Attributes.Add("onchange", "ValidateLength();");
    txtFlightRemarks.Attributes.Add("onKeyUp", "ValidateLength();");