2010-05-27 37 views
12

在jQuery-UI中滑塊箭頭鍵移動滑塊句柄(選中/單擊後的句柄),這很好,但我不希望滑塊處理鍵盤(我使用另一個purpouse的頁面上的箭頭鍵)。jQuery-UI滑塊 - 如何禁用鍵盤輸入?

任何想法如何禁用jquery-ui滑塊的鍵盤事件?

回答

22

您可以從手柄解除綁定​​事件做你想做的,是這樣的:

$("#slider").slider(); //create slider 
$("#slider .ui-slider-handle").unbind('keydown'); //disable keyboard actions 

You can see a demo here

+0

+1一直在尋找這個。 – jdborg 2013-05-15 17:12:10

+0

如何重新綁定事件? – Xyroid 2017-12-27 12:17:22

1

您還可以自動像這樣將上述溶液:

$.prototype.slider_old = $.prototype.slider; 
$.prototype.slider = function() 
{ 
    var result = $.prototype.slider_old.apply(this, arguments); 
    this.find(".ui-slider-handle").unbind("keydown"); // disable keyboard actions 
    return result; 
} 

只需在執行「$(...)。slider()」調用之前運行此代碼,並且它應該自動爲每個調用移除keydown事件,ri ght滑塊初始化後。

0

我推薦使用滑塊的create回調解除綁定​​像這樣:

$("#slider").slider({ 
    create: function() { 
    disableKeydown(); 
    } 
}); 

function disableKeydown() { 
    $(".ui-slider-handle").unbind('keydown'); 
} 

這取決於執行第一個答案的情況下,有沒有保證,unbind功能後,被稱爲滑塊被初始化。第二個答案有助於解決這個問題,但我認爲遵守由jQuery UI提供的API文檔使得這是一種更開發友好的方法,可以減少代碼歧義。