【问题标题】:Prevent Text Input expanding in IE防止文本输入在 IE 中扩展
【发布时间】:2010-12-15 12:35:23
【问题描述】:

我在 IE 中的输入字段出现问题。该代码是针对一个 portlet 的,并且宽度需要是动态的,因为用户可以将 portlet 放置在页面中三个具有不同宽度的列中的任何一个上。与往常一样,它在 FF 中运行良好,但在 IE 中却不行。为了使宽度动态,我设置了 width="100%"。填充文本输入的数据来自数据库。当页面被渲染时,如果有一个长 URL,文本输入会扩展以填充 IE 中的内容,但在 FF 中它只是保持相同的宽度(即它所在的 TD 的 100%)。如何阻止 IE 更改宽度以适应内容。将宽度设置为 100 像素的固定宽度可以解决此问题,但我需要将宽度设置为百分比,以适应页面上任何位置的 portlet 的布局。

我已经尝试过溢出:隐藏和自动换行:断字,但我无法工作。这是我的输入代码和样式表

<td class="right" >
    <input type="text" class="validate[custom[url]]" value="" id="linkText" name="communicationLink"  maxlength="500" maxsize="100" />
</td>

    .ofCommunicationsAdmin input {
    font-family: "Trebuchet MS";
    font-size: 11px;
    font-weight:normal;
    color:#333333;
    overflow:hidden;
    }



   .ofCommunicationsAdmin #linkText { 
    overflow:hidden; 
    width:100%; 
    border:1px 
    #cccccc solid; 
    background:#F4F7ED 
    top repeat-x;
    }

.ofCommunicationsAdmin td.right {
   vertical-align: top;   
   text-align: left;   
}

【问题讨论】:

  • 您能否发布指向示例页面的链接,或者至少是正确与错误的屏幕截图(FF 与 IE)?
  • 我无法提供链接,因为它是一个内部应用程序,我有一个屏幕截图,但我意识到我无法上传它,而且我也无法访问工作中的图像托管!基本上在 IE 中,当其中一个表单字段中有 URL 时,我的整个表格的宽度会增加三倍。在 FF 中,它保持不变,您必须将光标放在文本输入中并向右滚动才能看到文本。 FF 行为是我想要的。

标签: html css internet-explorer forms stylesheet


【解决方案1】:

我已经尝试过溢出:隐藏和自动换行:断字

是的,他们不会对输入做任何有用的事情。

为了使宽度动态,我设置了 width="100%"

这应该可以,但是父表需要限制为宽度和table-layout: fixed,否则auto-table-sizing 算法就会发挥作用,这很复杂,有点破,而且可能不会做你想做的事。

这是我如何布局液体形式的示例。请注意使用 box-sizing hack 使不同类型控件的边缘在支持它的浏览器(不是 IE6-7)中完全对齐。

<table class="form">
    <col class="label" /><col class="input" />
    <tr>
        <td><label for="foo">Foo</label></td>
        <td><input type="text" name="foo" id="foo" value="bar" /></td>
    </tr>
</table>

table.form { table-layout: fixed; width: 100%; }
col.label { width: 6em; }   /* let col.input have the rest of the width */
table.form input, table.form textarea, table.form select {
    width: 100%;
    box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box;
}

【讨论】:

  • 感谢您的回复。我尝试实现您提供的样式,但它仍然在做同样的事情,将整个 portlet 拉伸到屏幕大小的 2/3(整个 portlet 应该只占屏幕的 1/4)跨度>
  • 它不适合我。你能发布一个测试用例,包括演示失败的外包装吗?
  • 我不确定你要我做什么?
  • 我是说我们无法猜测为什么您在没有代码的情况下尝试实现此功能会失败。我不知道你的包装 portlet 的东西是什么样子的,因为你还没有发布它产生的 HTML。这个例子对我有用;如果我们不能重现问题,我们就无法修复它。
  • 要发布的代码太多了。我想我正在寻找一种快速的方法来告诉 IE 停止更改输入。我已经设法将用户 jQuery 组合在一起,以计算所需的宽度并在所有输入使用的样式上设置精确的宽度。它工作得很好,但如果 IE 像它应该的那样工作显然会更好。感谢您的帮助!
【解决方案2】:

我参加这个聚会有点晚了,但我自己也遇到了这个问题。

如果我对问题的理解正确,您的标记如下所示:

<table>
  <tr>
    <td>Whatever</td>
    <td><input /></td>
  </tr>
</table>

所以输入在表格中。此外,在您的 CSS 中,您将输入设置为具有基于百分比的宽度。但是,当您将大量文本放入输入中以使其扩展超过可见宽度时,表格会扩展以适应容器。

解决这个问题真的很容易,但是太随意了,没有太多帮助。解决方案是将其添加到您的 CSS(我将其添加到我的 reset.css)。

table {
  table-layout: fixed;
}

如果你愿意,你可以让它特定于 IE,但它对其他浏览器没有任何坏处(我注意到了)。

【讨论】:

    【解决方案3】:

    什么对我有用:INPUT {overflow-x:hidden; }

    【讨论】:

    • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • 为什么?问题在标题或“如何阻止 IE 更改宽度以适应内容”中,不确定这不能成为答案,我在 IE6 上遇到了同样的问题并以这种方式修复了它。跨度>
    • 那么你应该添加完整的工作代码sn-p。
    • sn-p 是我写的。这个问题中唯一清楚的是标题,但是在搜索这个问题时它在谷歌的顶部,它只影响 IE6,IE7 显然在 2006 年修复了这个问题。没有接受的答案,一个答案说溢出“赢了” t 对输入做任何有用的事情”,相反,overflow-x 对我有用,为什么?我不想知道 ;-) 我正在使用 Bootstrap + IE6 的集成,这是一个复杂的设置,就像 Caroline 我不能在这里写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    相关资源
    最近更新 更多