2013-08-20 79 views
0

我在我的網站上使用Select2來處理搜索結果。當用戶點擊結果列表中的一個項目時,select2-selection事件就會被觸發,我已經將它發送給選定的結果。檢測CMD/CTRL單擊select2選擇

$('.select2').on("select2-selecting", function(e) { 
    window.location.href = 'item/' + e.object.id; 
}); 

可如果用戶按住CMD(或CTRL在Windows鍵)我莫名其妙地檢測並在新標籤打開網頁?

+0

'window.console.log(e);'?的輸出是什麼?它可能是'if(e.ctrlKey)'就像在jQuery中一樣 –

回答

0

使用公爵的回答here和hluk的回答here。我想出了這個解決方案:

$(document).bind('keyup keydown', function(e){ 
    if(e.ctrlKey || e.metaKey){ 
     keyIsDown = true; 
    }else{ 
     keyIsDown = false; 
    } 
}); 

$('.select2').on("select2-selecting", function(e) { 
    url = 'item/' + e.object.id; 
    if(keyIsDown){ 
     var win=window.open(url, '_blank'); 
     win.focus(); 
    }else{ 
     window.location.href = scriptPath + 'item/' + e.object.id; 
    } 
});