5

有没有办法可以将文本框的宽度限制为等于 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 表格来控制布局......当然是另一个主题)但是有没有办法将实际宽度限制为输入框中允许的最大字符数?

4

6 回答 6

4

您可以从代码(在您的 Page_Load 中调用)设置它,如下所示:

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

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

于 2011-08-31T18:16:38.763 回答
3

这不会是精确的,因为字符的宽度可能会有所不同。但如果你真的很认真,你可以用一点 Javascript (jQuery) 来做。步骤是:

  • 在屏幕外创建一个跨度(顶部:-1000px 或其他东西)
  • 确保跨度与您的文本框具有相同的样式/类
  • 用 60 个字符填充范围
  • 使用jQuery测量span的宽度
  • 将该宽度应用于文本框

这是一种类似于您在 Facebook 上看到的自动扩展文本区域的技术,例如:http: //james.padolsey.com/javascript/jquery-plugin-autoresize/

(在这种情况下,您是水平而不是垂直进行。)

如果您需要真正的代码,请告诉我,我会尽力而为。

于 2010-06-11T01:29:20.653 回答
0

我使用 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,这将是一个有趣的练习

于 2010-06-11T01:03:52.763 回答
0

我意识到这是一个老问题,但对于那些遇到它寻找如何基于 MaxLength 属性设置文本框样式的人,我使用以下 CSS:

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

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

于 2013-10-17T13:20:22.407 回答
0
$(':input[maxlength]').each(function (i, e) {$(e).width(e.maxLength * 10)});

这是假设字符大约为10 像素。它非常适合我的需求。

于 2014-02-12T14:30:40.527 回答
0

我意识到这是一个非常古老的帖子 - 这是我的答案,供其他人将来参考!

使用 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 中工作。

至于究竟为什么会这样,不幸的是我缺乏知识。

于 2016-03-02T14:03:46.410 回答