2014-11-06 71 views
-1

我有一個TD內的輸入字段:文本輸入中(表TD內)不與IE9正確表示當文本長度小於TD的長度

<td title="" style="" role="gridcell"> 
    <input type="text" readonly="true" value="some_long_string_comes_here" style="background-color:transparent;border:0px solid white;"> 
</td> 

的文本的長度是小於td的長度。在Firefox中可以,但在Internet Explorer 9中,我無法看到整個文本。

EDIT 1:理由是:不存在寬度 - 大小 - maxlenght等輸入輸入元件的長度小於所述文本。在Firefox中,它等於文本的長度。我不想像寬度那樣使用任何特殊屬性。

編輯2:這裏是屏幕截圖,當我在調試模式下懸停鼠標輸入字段:

enter image description here

你可以看到的只有some_long_string_comes代替some_long_string_comes_here

有什麼建議嗎?

+0

有輸入大小http://stackoverflow.com/questions/1480588/input-size-vs-width - 爲什麼不添加它(即使與JavaScript),如果它來自服務器? – 2014-11-06 15:32:33

+1

請提供實際重現問題的代碼。除非對問題至關重要,否則應省略表格結構。描述是什麼讓你認爲「在Firefox上它等於文本的長度」;瀏覽器使用的默認寬度不*取決於實際值的長度。 – 2014-11-06 16:52:14

+0

@MichailMichailidis當我沒有定義寬度或大小時,爲什麼輸入的長度不等於內容的長度? FF不是那樣嗎? – kamaci 2014-11-07 07:22:00

回答

0

<input type="text">元素的寬度默認爲20個「平均」字符。瀏覽器的「平均」思想有所不同,它們可能會使用不同的默認字體,因此字符寬度會有所不同。但是,在流行瀏覽器中,其默認設置的渲染效果並不相同

可以使用size屬性或通過在CSS中設置width來更改寬度。它不依賴於父元素的內容或寬度(除非您使用%單位以創建這種依賴關係的方式設置元素的寬度)。

如果您有一些數據希望顯示給用戶,並且還可以作爲表單數據以只讀形式傳遞,那麼如果將這些函數分開,則可以獲得更大的靈活性。將數據作爲普通內容,例如在span元素(要能風格吧),並分別進入一個隱藏字段:

<input type="hidden" value="some_long_string_comes_here" name="foo"> 
<span class="show">some_long_string_comes_here</span> 

我添加了一個name屬性,因爲沒有它,該字段不給表格數據的任何貢獻。

在此方法中,默認情況下,可見文本顯示爲普通文本。

+0

是OP的問題,即使在IE9相比FF或其他瀏覽器的問題?我認爲這是投入在任何瀏覽器中的行爲..對嗎?這不僅僅是人物的差異,而是一個字的缺失。我在回答中寫了大小和寬度,OP說他們不存在用於輸入或他不想使用它(例如寬度)爲什麼這與他的回答更相關?Meh - Plus名稱在現代Ajax表單提交的輸入中不需要,甚至不需要表單標籤,儘管它們是一個很好的習慣 – 2014-11-07 14:48:33

0

如果你的意思是你看不到輸入的文本 - 如果你讓你輸入更大加入size=""屬性,或者更優選使用CSS輸入格式在你的風格中加入:

<input style="width: 200px;"/> 

編輯:你可以使用一些自動調整大小的插件來調整輸入..(有jquery/javascript和angularjs) 這種方式的輸入將有你想要的大小,然後通過使相應的表列寬度大。

+0

我不想使用寬度。我想檢測原因並修復它。 – kamaci 2014-11-07 07:30:48

+0

可能是很多東西!不同的字體 - 不同的默認寬度尺寸的輸入 - 你沒有提供足夠的信息,你沒有製作一個複製問題的jsfiddle。您的問題標題省略了IE9並添加了無關TD。我將編輯 – 2014-11-07 14:21:13

0

你可以使用一個跨度或其他標記,而不是輸入只讀= 「真」並把td規則樣式白色空間:無包裝

<td style="white-space:no-wrap;" role="gridcell"> 
<span style="background-color:transparent;border:0px solid white;"> somestring_comes_here</span> 
</td> 
+0

他爲什麼要用span替換輸入?他可能會使其有時編輯,並且是表格的一部分。 – 2014-11-06 15:42:48

+0

因爲用這種方法你總是閱讀所有文本內聯;您可以添加帶有display:none和width:100%的輸入標籤,如果它可編輯,則可以動態更改顯示:內聯並隱藏跨度 – 2014-11-06 16:21:59

+0

跨度如何編輯?他必須使其contenteditable =「true」 - 因爲他將其作爲輸入可能是因爲它是另一個視圖的一部分,它將使其可編輯。我會堅持OP給出的內容 – 2014-11-06 16:23:04