2016-11-07 84 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

编辑:我这样做是因为你想从中获取输入字段。这是方式。

相关问题