2012-01-22 4 views
1

jQuery 슬라이더가있는 페이지가 있으며 슬라이더를 이동하면 값이 서버로 전송됩니다. 동시에 서버는 매 초마다 쿼리하여 현재 상태를 가져옵니다 (페이지의 모든 필드에 대해).jQuery 슬라이더 (노브)에 포커스가 있는지 확인하는 방법은 무엇입니까?

그래서 슬라이더 (노브)에 초점이 맞춰져 있는지, 그렇지 않으면 놀고 있는지 알고 싶습니다. 따라서 서버에서 반환 된 값을 설정하는 아약스 코드는 집중된 슬라이더를 설정하는 것을 피할 수 있습니다. 그렇지 않으면 슬라이더를 움직일 때 바운스됩니다.

현재 코드 :

// Called by ajax's return from server, v is the server's value, to set on this slider 
function ReportObjectSize (v) 
{ 
    $('#slider_objsize').slider("option", "value", v); 
} 

무엇을 내가 생각하고 내가해야 할 것은 같은 것입니다 :

function ReportObjectSize (v) 
{ 
    if (!$('#slider_objsize').slider.IsFocused()) // Some way to tell if it's focused 
    $('#slider_objsize').slider("option", "value", v); 
} 

아니면 일반적으로이 작업을 수행 할 수있는 더 좋은 방법이?

답변

1

당신은 #slider_objsize .ui-slider-handle:focus 아무것도 일치하는지 확인할 수 있습니다 :

if($('#slider_objsize .ui-slider-handle:focus').length) 
    // The handle has focus. 
else 
    // The handle doesn't have focus. 

데모 다음 :focus selector jQuery를 이전 버전에서는 작동하지 않습니다 그래서 위의 jQuery를 1.6에 추가 된 http://jsfiddle.net/ambiguous/YKRme/1/

참고.

양자 택일로, 당신은 때 사용자가 시작 추적 할 startstop 이벤트에 후크 수 있고 슬라이더를 조롱하지 않는다 : 그들은 그것을 만지작하고 있는지 확인하기 위해

var sliding = false; 
$("#slider_objsize").slider({ 
    // ... 
    start: function() { $('#slider_objsize').data('sliding', true) }, 
    stop: function() { $('#slider_objsize').data('sliding', false) }, 
}); 

그런 다음 $('#slider_objsize').data('sliding')보고 . 이다 여기서

데모 :이 때 http://jsfiddle.net/ambiguous/Gn5cX/

+0

나는이에 디버거를 던져 얻을 : + A – Dave

+0

@ 데이브 : k.error = 기능 (A) { "구문 오류, 인식 할 수없는 표현을"던져 오류가 발생 했습니까? jsfiddles 중 하나? 당신의 코드? –

+0

if ($ ('# slider_objsize .ui-slider-handle : focus'). length)를 내 코드에 추가하고 디버거가 위의 행에서 멈추면 호출 스택에이 줄이 몇 단계 위로 나타납니다 . 아마도 내가 틀린 버전을 가지고있을 것입니다. – Dave

관련 문제