2013-10-15 114 views
0

有沒有辦法讓搜索框被禁用,但仍然有下拉選擇keypress上的一個選項,這是啓用搜索時的默認行爲?jQuery選擇下拉搜索功能沒有搜索框

$(element).chosen({ disable_search: true }); 

我已經嘗試使用使搜索和隱藏搜索框(沒有運氣):

$('ul.chosen-choices li.search-field').hide(); 

它好像是搜索需要顯示的按鍵如同一個普通工作選擇。有沒有人有幸運?提前致謝!

+0

有一個[問題](https://github.com/harvesthq/chosen/issues/2593)在選擇github問題隊列關於這個問題。 – thirdender

回答

2

這一個對我的作品,但它需要特殊字符處理一些調整:

var originalObjectSelector = "select#yourSelectId"; 

var $container = $(originalObjectSelector).data("chosen").container 

var $orig=$(originalObjectSelector); 

$container.bind("keypress", function(event){ 
    var charCode = event.charCode; 
    var keyCode = event.keyCode; 
    var character = String.fromCharCode(charCode); 
    //console.log("kc:", keyCode, "cc", charCode, "char:", character); 
    //console.log(event); 
    if(keyCode==13){ 
     //enter is pressed; 
     $orig.trigger('change'); 
    } 
    if(charCode != 0 && character.match(/^[-_ a-zA-Z0-9]+$/)) 
    { 
     //console.log('alphanumeric or space');  
     $orig.find("option").removeAttr("selected") 
      .filter(function() { return $(this).text().toLowerCase().indexOf(character.toLowerCase()) === 0; }) 
      .first().attr("selected", "selected"); 
     $orig.trigger('chosen:updated'); 
    } 

}); 
+1

這工作完美。對於正在搜索相同內容的用戶,我正在使用knockout綁定處理程序。它正在處理程序的INIT函數中完成。這顯然是在$(element).chosen()之後完成的。叫做。謝謝! – AaronBastian