【问题标题】:Set max char (as visibility allows) on multiline textbox在多行文本框上设置最大字符(可见性允许)
【发布时间】:2010-11-25 23:59:51
【问题描述】:

是否可以有一个多行文本框(我使用 asp.net c#),其中输入的最大字符数不能超过可见文本框的大小?

我已将滚动条垂直关闭(溢出:隐藏)。

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

这一定有一个 JS/JQuery hack 吗?

【问题讨论】:

    标签: asp.net jquery textbox textarea


    【解决方案1】:

    不,这是不可能的。

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

    当然,你可以用 JavaScript 来做这个技巧,但是关于可见区域,它可能并不那么容易。您将需要以某种方式计算当前正在使用的字体的度量,然后尝试在内存中渲染以查看是否超出了框的限制。在为 Windows 编程时可以使用这样的技巧,但对于网页,这可能是不可能的。

    【讨论】:

      【解决方案2】:

      虽然它最终变成了一个文本区域,但你可以这样做,但它是 hacky。

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

      就像我说的 hacky。

      祝你好运,

      【讨论】:

      • 这种方式几乎是不可能的,因为某些字符与其他字符不同(例如 m 大于 l),因此无法准确地将可见的可键入文本框作为基于字符数的最大长度。不过还是谢谢。
      【解决方案3】:

      您可以限制文本的最大值。字符如下。

      客户端

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

      服务器端(Page_Load):将 onchange 和 onkeyup 事件附加到所需的 textarea。

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

      【讨论】:

      • 不错的尝试,但这不是我想要的。
      猜你喜欢
      • 1970-01-01
      • 2017-06-11
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      相关资源
      最近更新 更多