2012-05-03 46 views
1

我想讓我的自動完成功能在模糊輸出文本框或按Enter鍵時返回「隱藏」屬性。數據格式爲{value: "Pal", pts: "30"}。我想獲得pts。這裏有一個例子:我可以通過jQuery自動完成匹配輸入而不需要通過下拉菜單嗎?

http://jsfiddle.net/ctuAg/4/

鍵入一個或兩個字母,並選擇一個名稱從下拉更新如預期的那樣「點」文本框(10次名的長度)。現在,我想知道當名稱完全鍵入,然後按下Enter或模糊(標籤或鼠標單擊)時,是否有觸發此點更新的方法。也就是說,讓自動完成搜索與文本框值和更新點的匹配。

據我所見,只有在下拉列表中點擊一個名稱才能更新點數。

我做了一些搜索,並找到最接近的功能/觸發器是search。我試着把這裏面模糊,但.pts返回undefined。這可能是答案,我應該如何使用它呢?

$("#autocomp").autocomplete({ 
     search: function(event, ui) { 
     alert(ui.item.pts); 
     } 
    }); 
+0

檢查了這一點: http://stackoverflow.com/questions/1197989/jquery-keypress-event-to-trigger-autocomplete-only-on-specific-keycodes 關鍵代碼輸入/返回是13. – Sliq

+0

感謝您的鏈接基督教,我正在尋找是不同的。當按下Enter時,我想檢查用戶輸入的內容是否在我的「源代碼」列表中,如果是,請在另一個文本框中填寫點,而不需要下拉列表。 –

回答

1

隨着你的榜樣的基本擴展,你可以簡單地檢查#autocomp值是否在數組中的輸入按:

$("#autocomp").keypress(function(event) { 
    var keycode = (event.keyCode ? event.keyCode : event.which); 
    if(keycode == '13') { 
    $("#status").append("Enter pressed\n"); 

     /* NEW CODE HERE */ 
     // loop through the array and check the value against available names 
     for (var i = 0, l = names.length; i < l; i++) { 
      // if the name matches, update #points 
      if ($(this).val() === names[i].value) { 
      $("#points").val(names[i].pts); 
      }      
     }    
     /* END NEW CODE */  

    $("#points").focus(); 
    } 
}); 

雖然它可能不是最有效的方法做到這一點,它可以完成工作。小提琴這裏:http://jsfiddle.net/ctuAg/6/

+0

我想到了這一點,它似乎是要走的路。感謝您查看我的問題。 –

相關問題