尝试将值动态传递给输入元素

时间:2016-11-07 17:10:04

标签: javascript jquery

我正在使用this JQuery gauge

我正在尝试创建某种设置动画,所以即100后300ms显示97,然后200ms后显示110等等。

我希望在输入字段上完全不可取(它会在某一点被抛出),那么我怎样才能使用具有恒定延迟的设定数字数组,其中动画播放速度为基础关于数组中的数字,并在每个数字之后延迟延迟常数(比如说300ms。)

感谢。

我尝试选择元素并应用这样的设置值:$("#myValues").myfunc({divFact:20,eventListenerType:'keyup'}).val(100),但它只是将数字放在那里没有结果,它使用eventListenerType:'keyup'而我的val函数是def。在100之后不发送密钥。

Here is a Fiddle

3 个答案:

答案 0 :(得分:1)

有两个问题,

  1. 插件未在插件代码中返回对象引用,因此您无法使用val()方法更改值。
  2. val()方法不会触发您需要以编程方式触发的keyup事件。
  3. 您可以添加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 :(得分: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

答案 2 :(得分:-1)

我已经改变了你的jsfiddle中的两件事:

  1. 我在changePosition方法中添加了speed参数。
  2. 我在对象初始化程序的末尾返回this
  3. 还有一些其他可能的小改进。查看我的jsfiddle

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