2010-11-17 138 views
0

我有一個使用jquery ui製作的滑塊,它的工作原理完全正常,除了範圍從0到250000之外,並且由於我每次調用ajax請求都會發生某些更改,如果我慢慢地從一邊滑到另一邊,結果將是大量的Ajax請求,這根本不好。jQuery UI滑塊 - 大範圍

一直在挖掘jquery ui文檔,但沒有看到任何方法來解決這個問題。我會暫時阻止事件,從用戶按下滑塊時開始,只有在用戶停止與之交互時才觸發事件,但沒有發現任何事情。

有什麼想法?

乾杯!

回答

5

而不是訂閱滑塊的滑動事件,爲什麼不訂閱它的slidechange或stopslide事件?

$(".selector").slider({ 
    change: function(event, ui) { ... } // Called after slidestop or if changed programmatically 
    stop: function(event, ui) { ... } // Called when user stops sliding 
}); 
+0

錯誤解釋停止方法,謝謝你的信息;) – yoda 2010-11-17 23:49:47

0

一種可能性是創建一個計時器,並給它一個以毫秒爲單位的超時時間,比如500秒,這是半秒。每次滑動事件觸發時,都要將計時器重置回超時時間。

如果計時器完全倒計時,您可以假定用戶已經停止移動滑塊並觸發您的Ajax調用。

這是JQuery插件如TypeWatch用於在用戶停止在文本框中輸入時僅發送Ajax請求的方法。

0
we can define steps in it also like, 

    $("#slider-range-max").slider({ 
      range : "max", 
      min : 0, 
      max : 200, 
      step : 0.1, //steps 
      value : 200, 
      slide : function(event, ui) { 
       $("#amount").val(ui.value); 
      } 
     }); 

Even we can handle it by writing value in textbox like this, 

on value change of textbox call this function by passing parameter this.value 

function setSlider(value) { 
    $("#slider-range-max").slider({ 
     range : "max", 
     min : 0, 
     max : 200, 
     step : 0.1, 
     value : value, // value will be setted slider position as par value 
     slide : function(event, ui) { 
      $("#amount").val(ui.value); 
     } 
    }); 
    $("#amount").val($("#slider-range-max").slider("value")); 
}