2012-07-26 146 views
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); 
    } 
+0

看到這個http://stackoverflow.com/questions/4080497/jquery-detecting-click-and-hold – ManseUK 2012-07-26 14:50:48

回答

0

基本上在MOUSEDOWN啓動它調用的函數每x毫秒,消除從錶盤字符的間隔。你已經有了兩個很好的答案,所以我只會發佈一個快速的jsfiddle。

http://jsfiddle.net/EB29c/

+0

Thanx很多..我感謝您的幫助! – bIgBoY 2012-07-26 15:41:13

0

退房setInterval 。將mousedown事件綁定到setInterval,將ID存儲在某處,將mouseup事件存儲到clearInterval

一定要覆蓋邊緣情況。例如,如果用戶單擊您的退格,然後拖動鼠標而不擡起鼠標按鈕。 onMouseOut將需要綁定到clearInterval。也可能有其他邊緣情況。

+0

感謝名單mwcz和萬歲英國。 @Mmwcz生病了,試試吧,回來!!乾杯 – bIgBoY 2012-07-26 14:56:14

+0

看到我已經做了確認@ mwcz的答案快速小提琴:http://jsfiddle.net/gRoberts/SDM55/ – Gavin 2012-07-26 14:59:11

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); 
    }); 
})(); 
+0

我正在嘗試。 Thanx – bIgBoY 2012-07-26 15:13:53

+1

你需要修改這一點,以使其與邊緣情況下工作,如@ mwcz暗示 – 2012-07-26 15:16:08