2016-11-07 78 views
1

我正在使用this JQuery gauge試圖將一個值動態傳遞給輸入元素

我試圖建立某種形式的集動畫,所以即顯示97 100,然後300毫秒後,再經過200毫秒顯示110等

我想是該輸入場完全不可靠的(它會被拋出一點),那麼我怎樣才能夠使用一個固定延遲的數組,並且動畫根據數組中的數字播放速度,並在延遲常數後延遲每個數字(讓我們說300ms)。

謝謝。

我試過選擇元素並應用如下設置值:$("#myValues").myfunc({divFact:20,eventListenerType:'keyup'}).val(100),但它只是在那裏放置數字而沒有結果,它使用的是eventListenerType:'keyup',我的val函數是def。的100

Here is a Fiddle

+1

https://jsfiddle.net/pranavcbalan/nLLbus47/1/ –

回答

1

可以遍歷數組,並設置不同的指標值的輸入字段的值:

$("#myValues").myfunc({ 
    divFact: 10 
}); 

var time = 0; 
$.each([ 100, 90, 80, 70 ], function(index, value) { 
setTimeout(function(){ $("#myValues").val(value).change(); }, time) 
time += 1000; 
}); 

要延遲每次可以使用迭代一個setTimeout函數包裝在值的setter上。

我刪除了keyUp事件,因爲插件的默認值爲eventListenerType您可以使用,但必須觸發此事件。

將初始值time設置爲您想要延遲第一次迭代時所需的任何值。

Example

+0

多麼美妙的答案,謝謝。 – clusterBuddy

1

後不發送KEYUP有2個問題,

  1. 不返回在插件代碼的對象引用,以便可以不使用改變值插件val()方法。
  2. val()方法不會觸發keyup事件,您需要以編程方式觸發它。

您可以添加code for returning the object reference或做它喜歡。

var $ele = $("#myValues"); // cache the reference 
$ele.myfunc({divFact:20,eventListenerType:'keyup'}); // initialize plugin 
$ele.val(100).keyup(); // change value and trigger the event 

Working Example

-1

我已經在你的jsfiddle改變兩兩件事:

  1. 我加了speed參數的changePosition方法。
  2. 我在對象初始值設定項的末尾返回this

其他一些可能的小改進。看我的jsfiddle

編輯:我這樣做是因爲你想從中獲取輸入字段。這是方式。

相關問題