2012-07-25 2 views
3

jQuery Autocomplete을 사용하여 제품 조회를하고 있습니다. 다음 코드를 사용하여 목록에서 선택을 시행합니다.몇 가지 경고문이있는 경우에만 자바 스크립트 코드가 다르게 동작합니다.

$(".force-selection").blur(function(e) { 
    var value = $(this).val(); 
    //check if the input's value matches the selected item 
    alert($(this).val()); 
    alert($(this).data('selected-item')); 
    if(value != $(this).data('selected-item')) { 
    //they don't, the user must have typed something else 
    $(this) 
     .val('') //clear the input's text 
     .data('selected-item', ''); //clear the selected item 
    } 
}); 

위의 코드는 두 개의 경고문이 제거 된 경우에만 작동합니다. 두 가지 경고문이있는 경우에만 동작이 변경되는 이유는 무엇입니까?

+1

인종? 아마도 경보 상자가 표시되는 동안 다른 발사가있을 것입니까? – Piskvor

+1

당신은 입력 상자'blur' 이벤트가 아니라 자동 완성의 [change] (http://jqueryui.com/demos/autocomplete/#event-change) 이벤트를 처리해야합니다. – jbabey

+1

자동 완성 조회가 비동기입니다. 그 때까지 기다려야하며 경고는 코드를 충분히 오랫동안 정지시킵니다. – Bergi

답변

2

blur 이벤트 대신 Autocomplete change event을 사용하도록 전환 해보십시오.

$(".selector").autocomplete({ 
    change: function(event, ui) { ... } 
}); 
  • 또는 유형으로 변경 이벤트에 바인딩 : autocompletechange

    • 어느 자동 완성 만드는 동안 init 옵션으로.

      $(".selector").bind("autocompletechange", function(event, ui) { 
          ... 
      }); 
      
  • 1

    는 그것은 몇 가지 문제가 발생할 수 있습니다.

    Internet Explorer를 사용하는 경우 alert을 사용하면 작업중인 모든 필드에서 '흐림'이벤트가 발생합니다. 샘플 코드에서 문제가 발생하는 이유는 분명합니다. 그렇지 않으면 경쟁 조건 문제를보고있을 것입니다.

    IE에서이 바이올린을 확인하십시오. http://jsfiddle.net/NsfKT/

    관련 문제