2009-06-04 87 views
1

当我做一个jQuery Ajax调用来自动填充页面加载下拉时,下拉控件被包含表中断。我明白,如果将表宽度设置为100%,它会解决这个问题,但在我的情况下,我不能这样做。此代码在FF中正常工作。这几乎就像IE在ajax调用完成后不会“重新呈现”页面。下面的代码 - 我希望我有一个公共的Ajax网页,我可以提供,因此它可以被复制,然后在文本编辑器粘贴到自己尝试一下ajax调用后,Internet Explorer不扩展表

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script> 
</head> 
<body> 
<table border="1"> 
    <tr> 
     <td> 
      <select> 
       <option>Test 1</option> 
       <option>Test 2</option> 
       <option>Test 3</option> 
      </select> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <select id="mySelect">    
      </select> 
     </td> 
    </tr> 
</table> 

<script type="text/javascript"> 
var mySelect = $("#mySelect"); 

fillListCombo = function(json) 
{ 
    if (json) 
    { 
     mySelect.empty(); 
     $(json).each(function(i, obj) 
     { 
      var option = $("<option></option>"); 
      option.val(obj.id); 
      option.text(obj.text); 
      option.appendTo(mySelect); 
     }); 
    } 
    else 
    { 
     mySelect.find('option').remove().end().append('<option value="0">(none available)</option>').val('0'); 
    } 
} 

updateListCombo = function() 
{ 
    $.ajax(
    { 
     type: "GET", url: "http://localhost/Ajax/ListLookupPage.aspx", dataType: "json", data: 
     { 
      listkindid: "1", userid: "17" 
     }, 
     timeout: 2000, success: function(opts) 
     { 
      fillListCombo(opts); 
     }, 
     error: function(xhr, status) 
     { 
      mySelect.find('option').remove().end().append('<option value="0">(none selected)</option>').val('0'); 
     } 
    }); 
}; 

updateListCombo(); 
</script> 
</body> 
</html> 

,但我不知道。

它是如何出现在Firefox:
alt text http://i39.tinypic.com/20sfuc3.jpg
它是如何出现在IE7/8:
alt text http://i40.tinypic.com/24511rl.jpg

如何强制IE 7/8正确呈现Ajax回调完成后的任何想法?

谢谢。

回答

2

有点破解,但似乎如果你改变一个不需要的CSS属性的选择,它会强制更新。

$('#mySelect').css({margin: '0'}).append('<option value="0">(none available)</option>'); 

(从你的截断的例子,但原则应该是相同的。)

我只与XP IE7测试了。

+0

哇!非常令人印象深刻。从来没有想过要尝试这种方法。是的,这绝对可以解决我的问题。谢谢!! – Craig 2009-06-04 17:03:18

相关问题