2010-05-27 9 views
12

jQuery-UI Kaydırıcı ok tuşları kaydırıcı tutamacını hareket ettirir (tutamaç seçildikten/tıklandıktan sonra), bu da güzel, ama klavyeyi işlemek için kaydırıcıyı istemiyorum (başka bir amaç için sayfadaki ok tuşlarını kullanıyorum)).jQuery-UI kaydırıcısı - klavye girişini nasıl devre dışı bırakabilirim?

jquery-ui kaydırıcı için klavye olaylarını nasıl devre dışı bırakacağınız hakkında herhangi bir fikrin var mı?

cevap

22

Böyle, ne istediğinizi yapmak kolundan keydown olayı kurtarabilir miyim:

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

You can see a demo here

+0

+1 Bunun için her yere baktım. – jdborg

+0

Etkinlik nasıl yeniden adlandırılır? – Xyroid

1

Ayrıca şöyle yukarıdaki çözüm otomatik olarak yapabilirsiniz:

$.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; 
} 

Sadece "$ (...). Slider()" çağrılarını yapmadan önce bu kodu çalıştırın ve her biri için tuş olayını otomatik olarak kaldırmalı kaydırıcı başlatıldıktan sonra ght.

0

ben şöyle keydown bağlantı kesme Kaydırıcının create geri arama kullanarak öneriyoruz: unbind fonksiyon girdikten sonra yapılabilecek hiçbir garantisi yoktur

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

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

ilk cevap infaz edildiği Bağlama bağlı olarak kaydırıcı başlatıldı. İkinci cevap bunun için çözülmeye yardımcı olur, ancak jquery UI tarafından sağlanan API belgelerine bağlı kalmanın daha az kod belirsizliği ile sonuçlanan daha dostane bir yaklaşım olduğunu düşünüyorum.