Jquery 在单击时重复执行操作

Jquery 在单击时重复执行操作,jquery,click,Jquery,Click,我不知道如何用语言来表达,所以请宽容我 我有一个虚拟键盘。其中有一个“退格”按钮(div),每次单击时删除一个字符。 我希望它更现实一些。因此,问题是“如果用户按下鼠标(即连续按下鼠标,而用户的手指没有离开鼠标),如何删除多个字符?” 1 2. 3. 4. 5. 6. 7. 8. 9 0 退格 呼叫 /*此外,jquery(我到目前为止一直使用的是),caret是fn 用于设置插入符号位置*/ $(“#dialpadbackspace”)。单击(函数(){ $('#dialpadentry').

我不知道如何用语言来表达,所以请宽容我

我有一个虚拟键盘。其中有一个“退格”按钮(div),每次单击时删除一个字符。 我希望它更现实一些。因此,问题是“如果用户按下鼠标(即连续按下鼠标,而用户的手指没有离开鼠标),如何删除多个字符?”

1
2.
3.
4.
5.
6.
7.
8.
9
0
退格
呼叫
/*此外,jquery(我到目前为止一直使用的是),caret是fn
用于设置插入符号位置*/
$(“#dialpadbackspace”)。单击(函数(){
$('#dialpadentry').focus();
var init=$(“#dialpadentry”).val();
var start=$(“#拨号输入”)[0].selectionStart;
var stop=$(“#拨号输入”)[0]。选择结束;
如果(开始=停止){
var substr=init.substring(0,开始);
var newsubstr=init.substring(0,start-1);
var finale=init.replace(substr,newsubstr);
$(“#dialpadentry”).val(结局);
$('dialpadentry').caret(start-1);
}否则{
var substr=初始子字符串(开始、停止);
变量finale=init.replace(substr.);
$(“#dialpadentry”).val(结局);
$('dialpadentry')。插入符号(开始);
}
签出。将
mousedown
事件绑定到
setInterval
,将ID存储在某处,将
mouseup
事件绑定到
clearInterval

请确保覆盖边缘情况。例如,如果用户单击您的退格,然后将鼠标拖走而不抬起鼠标按钮。
onMouseOut
将需要绑定到
clearInterval
。可能还有其他边缘情况。

尝试此操作

$(function () {
    var doBackspace;
    $("#dialpadbackspace").mousedown(function(e) {
        doBackspace = setInterval('$("#dialpadentry").val($("#dialpadentry").val().substr(0, $("#dialpadentry").val().length-1));',100);
    });
    $("#dialpadbackspace").mouseup(function(e) {
        clearInterval(doBackspace);
    });
})();

基本上,在mousedown上启动一个间隔,每隔x毫秒调用一个函数,从拨号盘中删除一个字符。您已经得到了两个很好的答案,所以我将发布一个快速的JSFIDLE


看看这个Thanx mwcz和Manse UK。@Mmwcz我会尝试一下,然后回来!!干杯,看我做了一把小提琴来确认@mwcz的答案:你需要修改一下,让它能够处理像@mwcz Suggesthanx这样的边缘案例。非常感谢你的帮助!!
$(function () {
    var doBackspace;
    $("#dialpadbackspace").mousedown(function(e) {
        doBackspace = setInterval('$("#dialpadentry").val($("#dialpadentry").val().substr(0, $("#dialpadentry").val().length-1));',100);
    });
    $("#dialpadbackspace").mouseup(function(e) {
        clearInterval(doBackspace);
    });
})();