如何在jQuery中使用mousedown控制计时器?

时间:2015-09-04 14:20:32

标签: javascript jquery timer

我的目的是让用户点击按钮,当用户点击时,字段显示4,当用户点击并按住超过1秒时,该字段显示4.5。这是我的代码:

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <script>
            $(document).ready(function(){
                $("#btn").mousedown(function(e) {
                    clearTimeout(this.downTimer);   
                    this.downTimer = setTimeout(function(){
                        $("#inp").val("4.5");   
                    }, 1000);
                }).mouseup(function(e) {
                    clearTimeout(this.downTimer);

                    // if no the holding is less than 1 sec, 
                    // then nothing will be set, when mouseon, 4 is set to the field.
                    var el = document.getElementById('inp')
                    if(el.value == ""){
                        $("#inp").val("4");
                    }       
                });
            });
        </script>
    </head>
    <body>
        <input type="text" id="inp">
        <button id="btn">4</button>Good
    </body>
</html>

但是,我的代码有局限性,当4.5设置时,它永远不会被设置回4.有没有解决这个问题?我有一个想法,如果我可以控制一些代表计时器的变量,那么我可以使用if condition来完成这个任务。这可能在jQuery中吗?

1 个答案:

答案 0 :(得分:2)

问题是条件$proportion不会是if(el.value == ""),因为输入字段不是为空(它已经有&#34; 4.5&#34 ; {/ 1>}上的

解决方案非常简单 当鼠标停用时,您必须将字段值设置为truemouseup。然后清除4

上的超时
setTimeout

JSFiddle