2009-06-04 2 views
1

Когда я делаю вызов jquery ajax для автоматического заполнения выпадающего списка на странице, выпадающий элемент управления отключается с помощью таблицы. Я понимаю, что если установить ширину таблицы на 100%, это исправит это, но в моем случае я не могу этого сделать. Этот код отлично работает в FF. Это почти похоже на то, что IE не будет «повторно отображать» страницу после завершения вызова ajax. Вот код -Internet Explorer не разворачивает таблицу после вызова ajax

<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 я мог бы обеспечить чтобы его можно было скопировать и вставить в текстовый редактор, чтобы попытаться самостоятельно, но я не делаю.

Как он появляется в 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>'); 

(усеченный пример из ваших, но принцип должен быть таким же.)

Я испытал это с IE7 только на XP.

+0

Вау! Очень впечатляюще. Никогда не думал попробовать этот подход. Да, это определенно устраняет мою проблему. Благодаря!! – Craig

+0

Рад, что это сработало для вас. Возможно, стоит отправить отчет об ошибке в jQuery (если его еще нет), поскольку он влияет только на ie. – user113716

+0

Я добавил билет в jquery. Не уверен, что это ошибка jquery или это просто проблема IE. Еще раз спасибо. – Craig

 Смежные вопросы

  • Нет связанных вопросов^_^