我不知道该怎么用语言表达,所以请容忍我。
我有一个虚拟键盘。其中有一个“退格”按钮(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);
}发布于 2012-07-26 23:29:00
基本上,在mousedown上启动一个间隔,它每隔x毫秒调用一个函数,从刻度盘中删除一个字符。你已经得到了两个很好的答案,所以我将只发布一个我做的快速jsfiddle。
http://jsfiddle.net/EB29c/
发布于 2012-07-26 22:53:31
查看setInterval。将mousedown事件绑定到setInterval,将ID存储在某个位置,并将mouseup事件绑定到clearInterval。
一定要覆盖边缘情况。例如,如果用户单击您的退格键,然后将鼠标拖走而不抬起鼠标按钮。需要将onMouseOut绑定到clearInterval。也可能有其他的边缘情况。
发布于 2012-07-26 23:01:13
尝尝这个
$(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);
});
})();https://stackoverflow.com/questions/11671863
复制相似问题