2012-05-20 21 views
2

我想用自動選擇在我的數據庫中查找一些客戶端。目標是確定客戶端是否存在,是否不運行某個功能。現在我的函數將確定第一個LI是否與輸入的值匹配。如果沒有,那麼它會清除結果並說客戶端不存在。jquery自動選擇查找名稱是否存在

目前我的代碼只查看第一個返回的LI,如果它不匹配第一個LI,則它不認爲客戶端存在。

這會導致一些問題...如果用戶決定點擊自動填充中列出的第二項,我的代碼將會清除它並說客戶端不存在。

此外,我有一個函數,檢查用戶何時點擊ENTER或TAB ...我的目標是選擇第一個列表項目,如果他們做到這一點,使它的價值。

我嘗試了很多不同的東西......包括:包含...等。我想在這一點上我只需要另一套眼睛。

$("#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()); 
     } 
}); 

對於一些生成的HTML的例子(通過jQuery的生成)之後我輸入「MIT」到「#client」輸入字段:

<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」(因爲它是第二個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