2012-04-12 26 views
8

Jquery UI otomatik tamamlama kullanıyorum. IE7 dışındaki tüm diğer tarayıcılarda FF, Chrome vb. hem IE yüksek sürümleri için çalışır ancak IE7 aşağıdaki hatayı veriyor: Bu benim fonksiyondurJquery UI otomatik tamamlama IE 7 sorunu

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

:

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

     } 
    }); 

}); 

Ben ayıklama çalıştı ve çizgisinde bu hataları dışarı: $(this).autocomplete({

Herhangi bir fikir? Şimdiden teşekkürler.

+0

Kullanıyorum 'input' sınıfınızı 'autocomplete' dışındaki bir şeye yeniden adlandırmayı deneyin. Belki 'input.ac' ya da bir şey. Ve, $ (this) .autocomplete ({'$ input.autocomplete ({' –

+0

'olabilir.) Bu çözmedi. –

cevap

6

Sorun benim işletim sistemimdeki gibi görünüyor. Windows 8 tüketici önizlemesini yüklemiştim ve IE7 uyumluluğundaki dev araçları kullanarak IE'yi çalıştırıyordum. Windows 7'de çalışıyor.

+0

Bunun için teşekkürler. –

+0

IE7'de IE7'de Win7'de aynı şekilde görünüyor. (Win8'in IE10'u doğru paketlenmiş mi?) Ancak, VirtualPC üzerinde çalışan gerçek IE7 için gayet iyi çalışıyor. – LinusR

0

Tahminimce, komut dosyalarından biri düzgün yüklenmiyor. Bu jquery ve IE 7. Burada sorunu çözüldü nasıl birlikte bir kez başıma: senaryonuz etiketlerinin tüm ÖNCE HTML'de

, bu ekleyin:

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

Daha önce bu çizgiyi dahil olduğunda jquery.min.js için etiketim, sorun gitti.

IE7 bir hayal kırıklığıdır.

+0

Bunu denedi ama şans yok –

-1

Değişiklik ui sürümü ile çözümlendim. Şimdi 1.9.1.custom.min.js (jquery UI 1.8'den önce) kullanıyorum ve IE7 uyumluluğu ile çalışıyorum. Jquery v1.7.2

İlgili konular