在IE中阻止文本输入扩展

时间:2009-11-11 15:53:26

标签: html css internet-explorer forms stylesheet

我在IE中输入字段有问题。代码用于portlet,宽度需要是动态的,因为用户可以将portlet放在页面中具有不同宽度的三列中的任何一列上。一如既往,它在FF中工作正常但在IE中却不行。为了使宽度dyanaic我设置宽度=“100%”。填充文本输入的数据来自DB。当呈现页面时,如果存在长URL,则文本输入扩展以填充IE中的内容,但是在FF中它仅保持相同的宽度(即它所存在的TD的100%)。如何阻止IE更改宽度以适应内容。将宽度设置为100px的固定宽度可以解决问题,但我需要将宽度设置为百分比,以便适应portlet在页面上放置的布局。

我尝试过overflow:hidden和自动换行:break-word但是我无法工作。这是我的输入代码和样式表

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

3 个答案:

答案 0 :(得分:5)

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

如果我正确理解了问题,您的标记看起来像这样:

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

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

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

table {
  table-layout: fixed;
}

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

答案 1 :(得分:2)

  

我尝试过overflow:hidden和自动换行:break-word

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

  

为了使宽度为dyanaic,我设置了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;
}

答案 2 :(得分:0)

对我有用的是:INPUT {overflow-x:hidden; }