如何将文本框的宽度设置为与ASP.NET中的MaxLength相同

问题描述:

有没有办法将文本框的宽度限制为MaxLength属性?在现在我的情况下,TextBox控件放置在一个表格单元格在这个片段:如何将文本框的宽度设置为与ASP.NET中的MaxLength相同

<td class=TDSmallerBold style="width:90%"> 
     <asp:textbox id="txtTitle" runat="server" 
      CausesValidation="true" 
      Text="Type a title here..be concise but descriptive. Include price." 
      ToolTip="Describe the item with a short pithy title (most important keywords first). Include the price. The title you provide here will be the primary text found by search engines that index Zipeee content." 
      MaxLength="60" 
      Width="100%"> 
     </asp:textbox> 

(我知道我不应该用HTML表格来控制肯定layout..another主题),但有一个如何将实际宽度限制为键入框中允许的最大字符数?

这不会是精确的,因为字符的宽度不同。但如果你真的认真对待这个问题,你可以用一些Javascript(jQuery)来完成。具体的步骤是:

  • 创建一个跨屏外(上图:-1000px或东西)
  • 确保跨度有相同的样式/班为您的文本框中
  • 填写跨度有60个字符
  • 使用jQuery测量跨度
  • 的宽度应用该宽度文本框

它类似于自动扩展的文本域为y的技术OU在Facebook上看到这样的:http://james.padolsey.com/javascript/jquery-plugin-autoresize/

(在这种情况下,你正在做这水平,而不是垂直)

如果你需要真正的代码,让我知道,我会尽我所能。

我用的是HTML属性的cols

因此,对于你的例子,我会用

 <td class=TDSmallerBold style="width:90%"> 
    <asp:textbox id="txtTitle" runat="server" 
     CausesValidation="true" 
     Text="Type a title here..be concise but descriptive. Include price." 
     ToolTip="Blah Blah I don't like horizotal scroll-bars" 
     MaxLength="60" 
     Width="100%" 
     Cols="60" 
     > 
    </asp:textbox> 

我从来没有尝试过,但我不知道是否有扎两者一起的方式。所以MAXLENGTH设置也设的cols,将是一个有趣的练习

你可以从你的代码(称为在你的Page_Load)这样设置:

txtTitle.Width = new Unit(txtTitle.MaxLength, UnitType.Em); 

我们的系统是数据库驱动的,我们有一个存储每个可变长度属性的元数据表。我个人使用元数据迭代ControlCollection和每个TextBox项目,拉动变量的元数据的长度,然后将其分配给MaxLength和宽度,但如果你已经有MaxLength设置,你可以让它做宽度在这个方式。

我意识到这是一个老问题,但对于那些谁遇到过寻找如何风格基础上的MaxLength文本框属性我用下面的CSS人:

input[maxlength='2'] { width: 40px;} 

如果你有很多的文本框与不同的MaxLengths,那么这可能不会是你的解决方案。但是,如果您想要显示一个文本框以匹配要输入的内容,我认为这是一个很好的解决方案。

$(':input[maxlength]').each(function (i, e) {$(e).width(e.maxLength * 10)}); 

这是使一个假设,即字符是大致 10px的。它适合我的需求。

我意识到这是一篇非常古老的文章 - 这里是我为未来其他人参考的答案!

使用Style属性将宽度设置为100%,而不是使用width属性。

例如

<td class=TDSmallerBold style="width:90%"> 
<asp:textbox id="txtTitle" runat="server" 
    CausesValidation="true" 
    Text="Type a title here..be concise but descriptive. Include price." 
    ToolTip="Blah Blah I don't like horizontal scroll-bars" 
    MaxLength="60" 
    Style="Width: 100%" 
    > 
</asp:textbox> 

这是在我工作的生产环境中尝试和测试的。它比使用Javascript更简单,适用于现有的HTML。

至于为什么这个作品,不幸的是我缺乏知识。