2014-02-11 1 views
2
Here is my code to implement autocomplete of jquery ui 1.10 on 8 comboboxes on my page. i am getting maximum call stack size exceeding. 

초과 최대 호출 스택의 크기가 일을 몇 가지 내가 코드의 일부 기능에 infinte 통화에서 오류 뒤에 그 이유를 알게되었습니다 인터넷 검색. 포커스, 선택, 변경과 같은 이벤트 하나씩 내 코드에서 여러 통화를 통해 진행되는 이벤트를 볼 수 있습니다. 그러나 논평 한 후에 사건은 모든 사건 벌레는 아직도 온다.이 버그는 firefox 브라우저를 얼마 동안 끊는다 얼마 동안. 이 문제를 해결하는 데 관심을 가져 주셔서 감사합니다. 정수보다 큰 0-0 옵션은 입력 상자 하나에 의해 입력 상자 하나에서 문자를 삭제하여 비워 자동 완성 요청을 발생하지 않는 한 그것을 잘 작동합니다 :catch되지 않은 오류 RangeError : JQuery와 자동 완성 1.10 버전

$(function(){ 

$("input[name^='TextRogue'],input[name^='TextBrand']").each(function(index,value){ 

$(this).autocomplete({ 
    minLength: 0, 
    source: users, 

    focus: function(event, ui) { 
    $(this).val(ui.item.LoginID); 
    return false; 
    }, 
    select: function(event, ui) { 

    var Name=ui.item.FirstName; 
    if(ui.item.LastName && ui.item.LastName!='') 
    { 
     Name+=" "+ui.item.LastName; 
    } 
    $(this).val(ui.item.LoginID+" ("+Name+")"); 
    var name= $(this).attr('name'); 
    var prefix=''; 
    if(name.lastIndexOf('Rogue')!=-1) 
    { 
     prefix='Rogue'; 
    } 
    else 
    { 
     prefix='Brand'; 
    } 
    var underscore_index=name.lastIndexOf('_'); 
    var suffix=name.substr(underscore_index); 
    $("#"+prefix+suffix).val(ui.item.UserID); 
    // code remove from here.. 

    return false; 
    }, 
    source: function (request, response) { 
     // var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
     var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i"); 
     var matching = $.grep(users, function (value) { 
      var LoginID = value.LoginID; 
      var Email = value.Email; 

      return matcher.test(LoginID) || matcher.test(Email); 
     }); 
     response(matching); 
    }, 
    change: function(event,ui){ if(!ui.item){ 
       // The item selected from the menu, if any. Otherwise the property is null 
       //so clear the item for force selection 
       $(this).val(""); 
       // also clear the hidden field containing values related to previous selection 
       var name= $(this).attr('name'); 
       var prefix=''; 
       if(name.lastIndexOf('Rogue')!=-1) 
       { 
        prefix='Rogue'; 
       } 
       else 
       { 
        prefix='Brand'; 
       } 
       var underscore_index=name.lastIndexOf('_'); 
       var suffix=name.substr(underscore_index); 
       $("#"+prefix+suffix).val(''); 
      } 

    } 
    }) 
    .data("ui-autocomplete")._renderItem = function(ul, item) { 
     var Name=item.FirstName; 
     if(item.LastName && item.LastName!='') 
     { 
      Name+=" "+item.LastName; 
     } 
     return $("<li>") 
     .append("<a>" + item.LoginID +" ("+Name+")<br><span style='font-size:12px;'>" + item.Email + "</span></a>") 
     .appendTo(ul); 
    }; 

    }); 
    fillSuggestedBrand(); 
    fillSuggestedRogue(); 

    }); 
+0

나는 그 문제가 동적으로 jquery 자동 완성에 대한 소스로 80,000 명의 사용자를 추가한다는 것을 알아 냈습니다. 사용자 수가 10 명인 사용자가 거의 없기 때문에 javascript 변수에 그런 오류가 없습니다. 하지만 나중에 사이트가 커짐에 따라 사용자 수가 적어 질 것입니다. 문제는 그때 올거야 .. 어떻게 해야할지에 대한 어떤 도움과 지침도 크게 감사 할 것입니다. – user3143770

+0

해결되었습니다. minLength : 0 옵션을 정수로 0보다 크게 변경하면 입력 상자에서 하나씩 문자를 삭제하여 입력 상자를 비우면 자동 완성 요청을 실행하지 않으므로 정상적으로 작동합니다. – user3143770

답변

2

버그가 지금 해결, 단지 MINLENGTH 변경 .

+0

"정수가 0보다 큽니다"는 코딩을 언급하십시오 ... –