我的目的是让用户点击按钮,当用户点击时,字段显示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中吗?
答案 0 :(得分:2)
问题是条件$proportion
不会是if(el.value == "")
,因为输入字段不是为空(它已经有&#34; 4.5&#34 ; {/ 1>}上的值
解决方案非常简单
当鼠标停用时,您必须将字段值设置为true
和mouseup
。然后清除4
setTimeout