我如何模拟文本字段中的退格操作?

时间:2009-11-14 20:36:19

标签: javascript jquery html dom

按下按钮时,我只想在常规文本框中模拟“退格”,删除光标左侧的字符。

谷歌和各种论坛正在制作真正随机的结果。这样做的正确方法是什么?

4 个答案:

答案 0 :(得分:4)

这似乎适用于Safari(也可能是Firefox),但我还没有在IE中测试过它:

  function backspaceAtCursor(id)
  {
    var field = document.getElementById(id);

    if(field.selectionStart)
    {
      var startPos = field.selectionStart;
      var endPos = field.selectionEnd;

      if(field.selectionStart == field.selectionEnd)
      {
        field.value = field.value.substring(0, startPos - 1) + field.value.substring(endPos, field.value.length);

        field.focus(); 
        field.setSelectionRange(startPos - 1, startPos - 1); 
      }
      else
      {
        field.value = field.value.substring(0, startPos) + field.value.substring(endPos, field.value.length);

        field.focus(); 
        field.setSelectionRange(startPos, startPos); 
      }
    }
  }

使用:backspaceAtCursor('elementid')

答案 1 :(得分:2)

所以我猜你并不是要把重点放在文本输入上来删除它。

您可以尝试几种方法。首先,获取输入的当前内容并删除最后一个字符,然后将修改后的字符串放回原处。例如(此代码应该有效):

var txt = $('#myinputtextbox');
txt.val(txt.val().slice(0, -1));

另一种方法是使用js来模拟被击中的退格字符键。您需要关注输入,将光标移动到行的末尾,然后触发字符。

答案 2 :(得分:1)

Javascript,onClick

var text = document.getElementById(myTxtBox).value;  
text = text.substr(0,text,length-1);
document.getElementById(myTxtBox).value = text;

答案 3 :(得分:0)

jQuery插件,用于模拟文本字段中的退格,适用于IE,FF,Chrome(基于here的代码)。

jQuery.fn.extend({
backspaceAtCaret: function(){
  return this.each(function(i) {    

    if (document.selection) 
    {
        this.focus();
        sel = document.selection.createRange();
        if(sel.text.length > 0)
        {
            sel.text="";
        }
        else
        {
            sel.moveStart("character",-1);
            sel.text="";
        }
        sel.select();
    }
    else if (this.selectionStart || this.selectionStart == "0")
    { 
        var startPos = this.selectionStart;
        var endPos = this.selectionEnd;

        this.value = this.value.substring(0, startPos-1) + this.value.substring(endPos, this.value.length);
        this.selectionStart = startPos-1;
        this.selectionEnd = startPos-1;
        this.focus();
    } 
    else 
    {
        this.value=this.value.substr(0,(this.value.length-1));
        this.focus();
    }
  })
}
});