2012-04-12 26 views
8

Estoy usando la autocompletar de la IU de jquery. Funciona en todos los demás navegadores FF, Chrome, etc., excepto IE7. Funciona para versiones superiores de IE también, pero IE7 da el siguiente error:Jquery UI autocompletar IE 7 problema

SCRIPT3: Member not found. 
jquery.min.js, line 2 character 30636 

Ésta es mi función:

$('input.autocomplete').each(function() { 
    var $input = $(this); 

    // Set-up the autocomplete widget. 
    var serverUrl = $input.data('url'); 

$(this).autocomplete({ 
    source: function(request, response) { 

    var countrySelect = $("#countrySelect").val(); 

if($input.attr('id') == 'searchJobPostalCode'){ 

    countrySelect = $("#searchJobCountrySelect").val(); 

    }else if($input.attr('id') == 'searchPeoplePostalCode'){ 

    countrySelect = $("#searchUserCountrySelect").val(); 

    } 
    $.ajax({ 
       url: serverUrl, 
       dataType: "json", 
       data: { 
        term: request.term, 
        countrySelect: countrySelect 
       }, 
       success: function(data) { 
         $input.removeClass("ui-autocomplete-loading"); 
         response($.map(data, function(item) { 
         if(typeof item.companyName != 'undefined'){ 
          return { 
           label: item.companyName, 
           value: item.companyName, 
           id: item.companyID 
          } 
        } 

         if(typeof item.locationId != 'undefined'){ 
          return { 
           label: item.postalCode +','+item.placeName+','+item.adminName1+','+item.countryCode, 
           value: item.postalCode +','+item.placeName+','+item.adminName1+','+item.countryCode, 
           postalCode: item.postalCode, 
           city: item.placeName, 
           state: item.adminName1, 
           country: item.countryCode 
          } 
        } 


         //to show user alias autocomplete on compose message 
         if(typeof item.userAlias != 'undefined'){ 
            var label1 = item.userAlias; 
            if(typeof item.city != 'undefined'){ 
             label1 = label1+','+item.city; 
            } 
            if(typeof item.state != 'undefined'){ 
             label1 = label1+','+item.state; 
            } 
            if(typeof item.country != 'undefined'){ 
             label1 = label1+','+item.country; 
            } 

          return { 
           label: item.userAlias, 
           userAlias: item.userAlias 
          } 
        } 

        })); 
       } 
      }); 
     }, 
     minLength: 3,cacheLength:0,keyDelay:900, 
     select: function(event, ui) { 

     $("#companyId").val(ui.item.id); 

     if(typeof ui.item.userAlias != 'undefined'){ 
      $(".toUser").val(ui.item.userAlias); 
     } 

     if(typeof ui.item.postalCode != 'undefined'){ 
       $("#postalCode").val(ui.item.postalCode); 
       $("#city").val(ui.item.city); 
       $("#state").val(ui.item.state); 
       $("#country").val(ui.item.country); 


        if($input.attr('id') == 'searchJobPostalCode'){ 

           $("#searchPostalCodeJobsSearch").val(ui.item.postalCode); 
           $("#searchCityJobsSearch").val(ui.item.city); 
           $("#searchStateJobsSearch").val(ui.item.state); 
           $("#searchCountryJobsSearch").val(ui.item.country); 

        }else if($input.attr('id') == 'searchPeoplePostalCode'){ 

           $("#searchPostalCodePeople").val(ui.item.postalCode); 
           $("#searchCityPeople").val(ui.item.city); 
           $("#searchStatePeople").val(ui.item.state); 
           $("#searchCountryPeople").val(ui.item.country); 

        } 


     } 
     }, 
       change: function(event, ui) { 
       if($(this).attr('id') !='companyName'){ 
         if (ui.item == null) { 
           valid = false; 
          }else{ 
           valid = true; 
          } 
          if (!valid) { 
           // remove invalid value, as it didn't match anything 
           $(this).val(""); 
           select.val(""); 
           input.data("autocomplete").term = ""; 
           return false; 
          } 
         } 
     }, 
     open: function() { 
      $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
     }, 
     close: function() { 
      $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
      $(this).removeClass("ui-autocomplete-loading"); 

     } 
    }); 

}); 

Me trataron de depuración y él los errores hacia fuera en línea: $(this).autocomplete({

¿Alguna idea? Gracias de antemano

+0

Trate de cambiar el nombre de su clase 'input' a algo que no sea' autocomplete'. Tal vez 'input.ac' o algo así. Y, parece que '$ (this) .autocomplete ({' podría ser '$ input.autocomplete ({' –

+0

Gracias. Esto no lo resolvió. –

Respuesta

6

Parece que el problema es con mi sistema operativo. Instalé Windows 8 Consumer Preview y ejecuté IE utilizando las herramientas de desarrollo en la compatibilidad con IE7. Funciona en Windows 7. Gracias.

+0

Gracias por esto. Estaba tirando de mi hair out. –

+0

Parece ser lo mismo para IE10 corriendo en modo IE7 en Win7. (Win8 tiene incluido IE10 ¿verdad?) Sin embargo, funciona bien para IE7 real que se ejecuta en VirtualPC. – LinusR

0

Supongo que uno de los scripts no se carga correctamente. Esto me sucedió una vez, con jQuery y el IE 7. Así es como he resuelto el problema:

En el HTML, antes de que todas las etiquetas de secuencia de comandos, añadir lo siguiente:

<script type="text/javascript"></script><!--this is here because of an IE bug--> 

Cuando Incluí esa línea antes mi etiqueta para jquery.min.js, el problema desapareció.

IE7 es una frustración.

+0

Probé esto pero no tuve suerte. –

-1

Lo resolví con la versión de cambio de la ui. Ahora uso 1.9.1.custom.min.js (antes era jquery UI 1.8) y funciona con compatibilidad con IE7. Yo uso jquery v1.7.2

Cuestiones relacionadas