JQuery UI AutoComplete funciona no Firefox, mas não no IE
-
20-09-2019 - |
Pergunta
Eu tenho o novo widget de preenchimento automático no JQuery UI 1.8rc3 funcionando muito bem no Firefox. Não funciona no IE. Alguém pode me ajudar?
Html:
<input type="text" id="ctrSearch" size="30">
<input type="hidden" id="ctrId">
JavaScript:
$("#ctrSearch").autocomplete({
source: "ctrSearch.do",
minLength: 3,
focus: function(event, ui){
$('#ctrSearch').val(ui.item.ctrLastName + ", " + ui.item.ctrFirstName);
return false;
},
select: function(event, ui){
$('#ctrId').val(ui.item.ctrId);
return false;
}
});
Resultado (ou seja, 8):
A caixa vermelha é o <ul>
Elemento criado por jQuery.
Eu também recebo este erro:
Line: 116 Error: Invalid argument.
Quando eu o abro no depurador de scripts do IE8, ele destaca f[b]=d
na linha 116 de jQuery.min.js. Observe que estou usando a versão 1.4.2 do jQuery hospedado nos servidores do Google (https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js).
Eu tentei remover algumas das opções, mas mesmo quando ligo .autocomplete()
Sem opções, ou apenas com a opção de origem, ainda recebo o mesmo resultado.
Mais uma vez, está funcionando no Firefox, mas não no IE. Alguma sugestão?
Obrigado.
ATUALIZAR: Como sugerido, usei o jQuery.js (em vez do jQuery.min.js) e recebi o erro na linha 4618. Veja a resposta de Jitter abaixo. Por favor, veja Esta outra questão de transbordamento de pilha Isso foi postado há alguns dias.
Atualização 2: Descobri que o JQuery UI AutoComplete usa uma propriedade inválida this.element.height
, quando deveria estar usando a função this.element.height()
Solução
Se eu entendo isso certo, a linha a que você se refere parece ser a linha 4618 em jQuery.1.4.2.js no style
função. O que só pode significar que o plug -in do AutoCompleter tenta definir um valor de estilo que o IE8 não entende ou não permite ser acessado/alterado dessa maneira.
style[ name ] = value; //style == elem.style from the passed in element
Outras dicas
Eu tenho exatamente o mesmo erro na mesma linha, mas para um negócio completamente diferente. Isto é, não estou fazendo nada a ver com preenchimento automático; Em vez disso, o meu ocorre porque estou tentando isso no jQuery ...
$(this).css('background', 'rgba(64,255,64,.4)');
Qual jQuery tenta fazer ...
style [ 'background' ] = 'rgba(64,255,64,.4)';
E falha, é claro, porque o RGBA não é um valor CSS suportado para o Internet Explorer. Então você não está sozinho neste, mas no meu caso eu estava apenas fazendo errado. A sintaxe jQuery apropriada é essa ...
$(this).css({backgroundColor: '#40ff40', opacity: .4});
Aqui está minha fonte ...