从使用jQuery秒表的表单提交到计时器的输入毫秒

时间:2014-05-28 08:46:38

标签: javascript jquery wordpress

我试图从这个jQuery秒表库https://github.com/robcowie/jquery-stopwatch

获取毫秒值

除了声明

的GitHub问题之外,没有记录毫秒值
  

数据中可用的毫秒数。 #2 ......   使用$()。数据('秒表')['已过去']

我试图通过以下代码以这种方式访问​​毫秒(它在Wordpress中,因此缺少$符号)

<a href="#" id="test"><h2>Test</h2></a>
<script>
    jQuery( "#test" ).click(function() {
        alert(jQuery().data('stopwatch')['elapsed']);
    });
</script>

但是我收到以下控制台错误

  

未捕获的TypeError:无法读取属性&#39;已过去&#39;为null

秒表通过此代码初始化

jQuery( document ).ready(function($) {
    setTimeout(function(){ $('.quizTimerSpan').stopwatch({startTime: 0, format: '{MM}:{ss}'}).stopwatch('start') }, 8500);
});

第一个问题实际上是获取毫秒值,然后实际将其传递给按钮单击时的输入值。我假设下面的代码在我实际获得毫秒值后会起作用,但我对jQuery很新,所以最好也检查一下它的健全性。

jQuery( "#question" ).submit(function( event ) {
      jQuery( "#timerValue" ).val(.data('stopwatch')['elapsed']));
      event.preventDefault();
});

HTML表单元素......

<input type="hidden" name="timerValue" id="timerValue" value="" />

1 个答案:

答案 0 :(得分:0)

我已经设法通过从这里切换到jQuery Timer库来实现我想要做的事情http://jchavannes.com/jquery-timer/demo

以下代码完全符合我的要求......

function pad(number, length) {
    var str = '' + number;
    while (str.length < length) {str = '0' + str;}
    return str;
}
function formatTime(time) {
    time = time / 10;
    var min = parseInt(time / 6000),
    sec = parseInt(time / 100) - (min * 60),
    hundredths = pad(time - (sec * 100) - (min * 6000), 2);
    // Switch for more accurate output
    // return (min > 0 ? pad(min, 2) : "00") + ":" + pad(sec, 2) + ":" + hundredths;
          return (min > 0 ? pad(min, 2) : "00") + ":" + pad(sec, 2);
}

var quizStopwatch = new (function() {
    var $stopwatch;
    var incrementTime = 70;
    var currentTime = 0;

$(function() {
    $stopwatch = $('.quizTimerSpan');
    quizStopwatch.Timer = $.timer(updateTimer, incrementTime, true);
});

function updateTimer() {
    var timeString = formatTime(currentTime);
    $stopwatch.html(timeString);
    currentTime += incrementTime;
    document.title = timeString;
    $("#timerValue").val(currentTime);
}
});

作为奖励,我还可以在每个时间间隔设置页面标题。