2009-06-04 18 views
1

jquery ajaxを呼び出すと、ページの読み込み時に自動的にドロップダウンが行われます。ドロップダウンコントロールは、含まれているテーブルによって切り捨てられます。テーブル幅を100%に設定するとこれを修正することができますが、私の場合はそれを行うことはできません。このコードはFFで正常に動作します。 Ajax呼び出しが完了した後、IEがページを「再レンダリング」しないのとほぼ同じです。ここではコードです -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> 

私は私がそれをコピーして、自分でしようとするテキストエディタに貼り付けることができたので、提供できる公共のAjaxページがあればいいのに、私にはありません。
alt text http://i39.tinypic.com/20sfuc3.jpg
それはIE7/8に表示されますどのように:
alt text http://i40.tinypic.com/24511rl.jpg

AJAXコールバックが完了した後に、正しくレンダリングするためにIE 7/8を強制する方法上の任意のアイデアを、Firefoxで表示されますどのように

ありがとうございました。

答えて

2

ハックのビットですが、選択の不要なCSSプロパティを変更すると、強制的に更新が行われるようです。

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

(あなたから切り捨てられた例が、原理は同じでなければなりません。)

私はXP上のIE7でこれをテストしました。

+0

うわー!非常に印象的。そのアプローチを試みることは決して考えなかった。はい、間違いなく私の問題を解決します。ありがとう!! – Craig

+0

それはあなたのために働いてうれしい。バグレポートをjQueryに提出する価値があるかもしれません(すでに存在しない場合)。 – user113716

+0

jqueryへのチケットを追加しました。 jqueryのバグかIEの問題かどうかは不明です。再度、感謝します。 – Craig

関連する問題