2011-03-07 11 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