2012-05-20 2 views
2

내 DB에서 일부 클라이언트를 찾으려면 autoselect를 사용하려고합니다. 목표는 클라이언트가 함수를 실행하지 않는지 여부를 판별하는 것입니다. 바로 지금 내 함수가 첫 번째 LI가 입력 된 값과 일치하는지 확인합니다. 그렇지 않으면 결과를 지우고 클라이언트가 존재하지 않는다고 말합니다.jquery autoselect 이름이 존재하면 찾기

현재 내 코드는 첫 번째로 반환 된 LI 만보고, 첫 번째 LI와 일치하지 않으면 클라이언트가 존재하지 않는 것으로 간주합니다.

이로 인해 여러 가지 문제가 발생합니다 ... 사용자가 자동 ​​완성에 나열된 두 번째 항목을 클릭하면 내 코드가 지워지고 클라이언트가 존재하지 않는다고 말합니다.

또한 사용자가 ENTER 또는 TAB을 눌렀을 때를 확인하는 기능이 있습니다. 내 목표는 첫 번째 목록 항목을 선택하고 값을 확인하는 것입니다.

나는 다음을 포함하여 많은 다른 것들을 시도했다 ... 포함한다. 나는이 시점에서 나는 또 다른 눈이 필요하다고 생각한다.

(jQuery를에 의해 생성) 생성 된 HTML의 몇 가지의 예를 들어 내가 '#client'입력 필드에 "MIT"를 입력 한 후 들어
$("#client").autocomplete({ 
     source: "autoComplete/clientAutoComplete.php", 
     minLength: 2, 
     change: function (event, ui) { 
       //if the value of the textbox does not match a suggestion, clear its value 
       if ($(".ui-autocomplete li:first").text() != $(this).val()) { 
         $(this).val(''); 
         clientDoesNotExist(); 
       } 
     } 
}).on('keydown', function (e) { 
     var keyCode = e.keyCode || e.which; 
     if ((keyCode == 9 || keyCode == 13) && ($(".ui-autocomplete li:first").text() == $(this).val())) { 
       $(this).val($(".ui-autocomplete li:visible:first").text()); 
     } 
}); 

:

<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem" style="z-index: 1; top: 202.983px; left: 337.15px; display: block; width: 406px;"> 
<li class="ui-menu-item" role="menuitem"> 
<a class="ui-corner-all" tabindex="-1">mitch</a> 
</li> 
<li class="ui-menu-item" role="menuitem"> 
<a class="ui-corner-all" tabindex="-1">mitch2</a> 
</li> 
<li class="ui-menu-item" role="menuitem"> 
<a class="ui-corner-all" tabindex="-1">Mitchell56474</a> 
</li> 
</ul> 

가 조금 더 설명하기 위해, 이 시점에서 "mitch2"(제 2 LI이기 때문에)를 선택하면 현재 코드가 clientDoesNotExist()를 실행합니다. 기능. 반환 된 결과에 정확히 일치하는 항목이 있는지를 확인하기 위해 모든 LI를 검사해야 할 수도 있습니다. 난 당신이 텍스트와 동일하다 리를 필터링 한 후 첫 번째를 잡고 싶은 생각

+0

HTML의 모양을 그림으로 나타냅니다. 관련 HTML을 게시 할 수 있습니까? 또한 거기에있는 동안 코드 서식을 수정할 수 있습니까? 감사! – jmort253

+0

나는 좀 더 자세한 내용을 알려 주었다. 나는 그것이 시각화하기 어려울지도 모른다는 것을 이해할 수있다. –

+0

아직도 혼란 스럽네요. 자동 완성에없는 모든 값을 지우고 싶습니까? 리의 모든 것을 검색하여 클라이언트가 있는지 확인하고 싶습니까? – jmort253

답변

1

...

$(".ui-autocomplete li a").filter(
    function() { 
     return $(this).text() == "mitch2"; 
    }).first() 

당신은 또한 내가 정적에 $(this).val()를 변경 한 것을 알 수 있습니다 텍스트 "mitch2" .. 필터 호출의 함수는 컨텍스트를 변경하므로 $(this).val() 값을 변수에 저장하고 "mitch2" 대신 사용해야합니다.

업데이트 설명 : * 내 테스트에서 사용했던 앵커 태그를 생략했습니다. 그것은 내 테스트에서 필요한 것 같습니다.

+0

@mrfras - 코드를 읽을 수 있도록 코드 서식을 수정했습니다. 또한 클로저를 사용하면 참조했던 $ (this) .val을 전달할 수 있습니다. +1 – jmort253

+0

@ jmort253 - 많은 의무가 있습니다! – mfras3r

관련 문제