2012-04-12 15 views
8

Sto utilizzando il completamento automatico dell'interfaccia utente jquery. Funziona con tutti gli altri browser FF, Chrome ecc tranne IE7. Lavora per le versioni superiori di IE come bene, ma IE7 dà l'errore di seguito:Completamento dell'interfaccia utente Jquery IE 7 problema

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

Questa è la mia funzione:

$('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"); 

     } 
    }); 

}); 

ho cercato di eseguire il debug e esso errori fuori a linea: $(this).autocomplete({

Qualche idea? Grazie in anticipo

+0

Provare a rinominare la propria classe 'input' con qualcosa di diverso da' completamento automatico'. Forse 'input.ac' o qualcosa del genere. E sembra come $ (this) .autocomplete ({'potrebbe essere' $ input.autocomplete ({ –

+0

Grazie. Questo non lo risolveva. –

risposta

6

Sembra che il problema sia con il mio sistema operativo. Avevo installato l'anteprima consumer di Windows 8 e stavo eseguendo IE usando gli strumenti di sviluppo nella compatibilità IE7. Funziona in Windows 7. grazie.

+0

Grazie per questo. capelli fuori –

+0

Sembra essere lo stesso per IE10 in esecuzione in modalità IE7 su Win7. (Win8 ha IE10 in bundle giusto?) Tuttavia, funziona bene per IE7 reale in esecuzione su VirtualPC. – LinusR

0

La mia ipotesi è che uno degli script non si carichi correttamente. Questo è accaduto a me una volta, con jQuery e IE 7. Ecco come ho risolto il problema:

In HTML, prima di tutti i tag di script, aggiungere questo:

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

Quando ho inserito quella linea prima il mio tag per jquery.min.js, il problema è andato via.

IE7 è una frustrazione.

+0

Ho provato questo, ma senza fortuna. –

-1

Ho risolto con cambio versione ui. Ora uso 1.9.1.custom.min.js (prima era jquery UI 1.8) e funziona con la compatibilità IE7. Io uso jquery v1.7.2

Problemi correlati