2012-04-12 113 views
8

我正在使用jQuery UI自动完成。它适用于除IE7以外的所有其他浏览器FF,Chrome等。适用于更高版本的IE很好,但IE7给出了以下错误:JQuery UI自动完成IE 7问题

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"); 

     } 
    }); 

}); 

我试图调试,并在线路就出现了错误:$(this).autocomplete({

任何想法?在此先感谢

+0

尝试将'input'类重命名为'autocomplete'以外的内容。也许'input.ac'什么的。而且,它看起来像'$(this).autocomplete({'可能是'$ input.autocomplete({' – 2012-04-12 20:47:14

+0

谢谢。这并没有解决它。 – 2012-04-12 23:13:07

回答

6

看起来问题是与我的操作系统。我安装了Windows 8消费者预览版,并且在IE7兼容性中使用开发工具运行IE。它在Windows 7中工作。谢谢。

+0

谢谢你。 – 2012-07-28 20:29:22

+0

似乎在Win7上运行IE7模式的IE10是一样的(Win8有捆绑IE10的权利?)但是,它对在VirtualPC上运行的真正的IE7运行良好。 – LinusR 2013-04-03 20:18:49

0

我的猜测是其中一个脚本加载不正确。这发生在我身上一次,jQuery和IE 7.下面是如何解决这个问题:

在HTML,之前的所有脚本标记的,补充一点:

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

当我包括在这之前线我的标签为jquery.min.js,问题就消失了。

IE7是一个沮丧。

+0

试过这个,但没有运气。 – 2012-04-12 23:13:18

-1

我解决了更改用户界面版本。现在我使用1.9.1.custom.min.js(之前是jQuery UI 1.8),它与IE7兼容。我使用jquery v1.7.2