0

我不知道如何用语言表达,所以请多多包涵。

我有一个虚拟键盘。其中有一个“退格”按钮(div),每次单击都会删除一个字符。我希望它更现实。所以问题是“如果用户按下鼠标,我如何删除多个字符(即连续按下鼠标并且用户没有将手指从鼠标上移开)”

<div class="dialpadnumbers">1</div>
<div class="dialpadnumbers">2</div>
<div class="dialpadnumbers">3</div>
<div class="dialpadnumbers">4</div>
<div class="dialpadnumbers">5</div>
<div class="dialpadnumbers">6</div>
<div class="dialpadnumbers">7</div>
<div class="dialpadnumbers">8</div>
<div class="dialpadnumbers">9</div>
<div class="dialpadnumbers">0</div>
<div id="dialpadbackspace" class="dialpadnumbers">Backspace</div>
<div id="dialpadcall" class="dialpadnumbers">CALL</div>

/*also the jquery for it(the one ive been using till now is),caret is the fn          
for setting caret position*/
$("#dialpadbackspace").click(function() {
    $('#dialpadentry').focus();
    var init = $("#dialpadentry").val();
    var start = $("#dialpadentry")[0].selectionStart;
    var stop = $("#dialpadentry")[0].selectionEnd;
    if (start == stop) {
        var substr = init.substring(0, start);
        var newsubstr = init.substring(0, start - 1);
        var finale = init.replace(substr, newsubstr);
        $("#dialpadentry").val(finale);
        $('#dialpadentry').caret(start - 1);
    } else {
        var substr = init.substring(start, stop);
        var finale = init.replace(substr, '');
        $("#dialpadentry").val(finale);
        $('#dialpadentry').caret(start);
    }
4

3 回答 3

0

查看setIntervalmousedown将事件绑定到setInterval,将 ID 存储在某处,并将mouseup事件绑定到clearInterval

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

于 2012-07-26T14:53:30.853 回答
0

尝试这个

$(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);
    });
})();
于 2012-07-26T15:01:13.340 回答
0

基本上在 mousedown 开始一个间隔,它每 x 毫秒调用一个函数,从表盘中删除一个字符。你已经得到了两个很好的答案,所以我将发布一个我做过的快速 jsfiddle。

http://jsfiddle.net/EB29c/

于 2012-07-26T15:29:00.193 回答