2014-05-21 1 views
0

입력 필드가 Jquery UI 자동 완성과 연결되어 있습니다. 이 필드는 사용자가 장치의 카탈로그 번호를 입력하는 데 사용됩니다. 그는 두 가지 방법으로 작업을 수행 할 수 있습니다.가장 가까운 일치를 선택하는 Jquery UI 자동 완성

  • 먼저. 손으로 작성하고 자동 완성 목록
  • 에서 하나를 선택하거나 카탈로그 번호

Unfortunatelly 바코드를 입력하는 바코드 스캐너를 사용하여 항상 장치 EQ에 인쇄 된 그와 같은 대답을 제공합니다.

  • 100-ENT/A 그러나 바코드는 100-ENT/OA

  • 를 반환 156-CNR/B 인쇄 및 바코드 그래서

156-CNR B를 반환이 인쇄되어 있습니다 자동 완성에서 가장 근접한 항목을 선택하고 싶습니다.

나는이 플러그인을 사용하여 첫 번째 플러그인을 선택할 수 있음을 알고 있습니다. CLICK 하지만 가장 일치하는 항목을 선택하는 방법은 무엇입니까?

function GetNames() { 
    var availableTags; 
    var jsonData 
    $.ajax({ 
     url: "/DeviceInstance/GetDeviceNames", 
     type: "GET", 
     dataType: "json", 
     error: function (data) { 
      alert("wystąpił nieokreślony błąd " + data); 
     }, 
     success: function (data) { 
      availableTags = data; 
      $(".deviceCatalog").autocomplete({ 
       source: availableTags, 
       change: function (event, ui) 
       { 
        viewModel.DeviceTemp(ui.item.id); 
       } 
      }); 
     } 
    }) 

}; 

답변

1

당신이 원하는에 따라 것을 일단, 당신의 가장 가까운을 식별 할 수있을 것입니다 방법을 구축하고자합니다 : I로드 자동 완성 깨끗한 코드에 붙어있어 지금이 순간

기능을 사용하려면 자동 완료 이벤트 중 하나에서 해당 메소드를 호출해야합니다. 공개 이벤트에서 전화를 걸어서 사용자에게 "가장 일치하는 항목"을 미리 선택할 수있게 한 다음 해당 항목에서 선택하도록 할 수 있습니다.

희망이 도움이됩니다.

당신이 jsbin을 설정하려는 및

+0

"가장 가까운 성냥을 식별 할 수있는 방법을 만들고 싶습니다"라고 OP가 요구하는 것입니다. '어떻게'에 관한 나의 대답을보십시오. – Mzn

+0

그래서 당신은 비교하는 방법을 묻습니다. 오해. 나는 그것을 구현할 곳을 묻고 있다고 생각했다. 당신은 당신이 얻는 텍스트와 원하는 결과가 무엇인지에 대한 몇 가지 예를들 수 있습니까? 일부 샘플은 도움이 될 코드 유형에 익숙하지 않습니다. – workabyte

2

당신은 교정에 사용되는 알고리즘의 방향으로 생각해야합니다 필요하다면 조금 더 도와 드리겠습니다 올바른 메신저를 따기위한 방법을 포함하는 경우 맞춤법 오류. 예를 들어, 귀하의 올바른 유이 르 (Yuor to Your). 문자열 편집 거리와 같은 일부 알고리즘은 두 문자열 중 세 번째 문자가 세 번째 문자에 더 가깝다는 것을 알려줍니다.

두 문자 u를 o 및 o로 변경해야하기 때문에 Yuor와 Your 간의 편집 거리는 2입니다. 유. o를 제거하고 k를 추가해야하기 때문에 Yuor와 York 사이의 편집 거리는 2입니다 (그러나 추가 또는 삭제가 더 비싸다고 생각할 수 있으므로 o를 2 점으로 계산하십시오).

이것은 당신이 요크보다 유어에 더 가깝다는 것을 의미합니다. 따라서 귀하의 알고리즘은 유어에 대한 보정으로 요크보다는 오히려 당신을 선택합니다.

나는이에 당신이 발굴해야합니다 어떤 생각 : http://en.wikipedia.org/wiki/Edit_distance

이 문제를 해결 유명한 동적 프로그래밍 알고리즘이, (그들이 진짜로 "소프트웨어 프로그래밍"아니다) 매우 복잡하지 않습니다. http://en.wikipedia.org/wiki/Levenshtein_distance