我結束了通過改變所選擇的插件,並添加以下代碼AbstractChosen.prototype.keyup_checker
解決這個:
case 65:
if (evt.ctrlKey && this.results_showing) {
if (typeof onSelectAll == 'function') {
onSelectAll($(this.container).attr('id'), $(this.form_field).attr('id'));
this.results_hide();
}
return true;
}
基本上,如果按Ctrl-A中,而選上的選擇是開放的,它會調用一個用戶定義的委託onSelectAll
與選定的容器的id和底層select的id作爲參數。如果沒有按下Ctrl鍵,我希望這會回落到默認值,這允許搜索字符串輸入像平常一樣工作。
回到我的網頁上,我有以下:
function onSelectAll(containerId, selectId) {
var ids = [];
$("#" + containerId).find('.active-result').each(function() { ids.push(parseInt($(this).attr('data-option-array-index'))); });
$(ids).each(function() { $($('#' + selectId + ' option')[this]).attr('selected', 'selected'); });
$('#' + selectId).trigger('chosen:updated');
}
這得到在選擇的容器中可見結果的數組索引,如在基礎選擇控制選擇標記它們,然後促使已選擇容器更新。
我知道改變一個標準鍵盤快捷鍵的含義並不完全是可以理解的,但在其他三個最有可能使用這個東西的開發者的非正式調查中,他們都提出了這個問題,所以我認爲我是目前已明確。這就是說,改進和清理我的JavaScript的建議非常受歡迎 - 我一直在做後端和SQL的東西這麼長時間,我完全失去了我的UI截圖。