2011-03-07 15 views
2

我有一個ASP.NET MVC項目,在視圖中我有一個非常簡單的佈局jQuery的選擇/下拉和調整按鈕位置

<% using (Html.BeginForm("MyAction", "MyController")) { %> 
<select id="drDropdown" name="drDropdown"></select> 
<input type="submit" value="Next" /> 
<% } %> 

而且我有一些jQuery腳本動態地加載來自控制器的內容填充該下拉列表的值。

<script language="javascript" type="text/javascript"> 
    function myClientControl_onSelect(e) { 
     $.ajax({ 
      type: "Post", 
      url: "/MyController/MyAction/" + parameter, 
      dataType: "json", 
      error: function (request, error) { 
       alert("readyState: " + request.readyState + "\nstatus: " + request.status); 
       alert("responseText: " + request.responseText); 
       alert('Error ' + error); 
      }, 
      success: function (data) { 
       data = $.map(data, function (item, a) { 
        return "<option value=" + item.Id + ">" + item.Name + "</option>"; 
       }); 
       $("#drDropdown").html(data.join("")); 
      } 
     }); 
    } 
</script> 

功能方面,它工作得很好。但在我的IE8上發生了一些奇怪的事情。因爲每次從控制器加載的內容各不相同,導致select/dropdown的寬度不一致。在IE8中,我的提交按鈕的位置永遠不會改變,當選擇的寬度增加時,它只會停留在頂部。在我的FireFox中它工作正常,提交按鈕的位置調整自己以保持在我的選擇旁邊。

任何線索,我該怎麼做才能使它在2個瀏覽器之間保持一致?

感謝 哈迪

+0

你的CSS是什麼樣的? – 2011-03-07 01:55:35

+1

嘗試硬編碼那裏的一些選項,並暫時斷開ajax只是爲了查看是否發生相同的事情。如果是這樣,那麼你可能有CSS工作要做。 – rcravens 2011-03-07 01:57:54

+0

嗨rcravens,沒有ajax它只是在IE8和FF 3.6看起來不錯。 – hardywang 2011-03-07 02:18:17

回答

0

表單元素將會調整,除非你有CSS,告訴瀏覽器不要。

刪除您的CSS引用和任何內聯樣式並查看您的代碼是否行爲相同,它可能不會。

如果無法刪除所有樣式,請使用FireBug和IE Developer Toolbar查看CSS層次結構。兩者都會告訴哪些CSS應用於選擇和/或容器項目,這些項目可能不允許它們隨數據一起增長。您還可以通過使用這些工具操作選項列表來模擬動態數據加載。您應該通過手動操作獲得與ajax加載相同的結果。

+0

到目前爲止,所有的控件都是沒有CSS或內聯風格的裸機。 – hardywang 2011-03-07 02:16:12

0

只是要下拉的寬度是無論最大寬度應該是通過應用樣式:

<select id="drDropdown" name="drDropdown" style="width: 200px;"></select> 
+0

我寧願選擇寬度動態以適應任何數據。謝謝。 – hardywang 2011-03-07 02:14:32

0

請刪除「寬度」 CSS樣式定義<select>

對於IE,如果您爲<select>設置了「寬度」,但內容長度超過了設置的值,則較長的部分將被隱藏。

+0

該選擇根本沒有CSS。 – hardywang 2011-03-07 02:12:42

+0

然後我建議你在ajax回調函數上創建新的「select」標籤。 – ahgood 2011-03-07 02:34:17