代码之家  ›  专栏  ›  技术社区  ›  Brandon

如何在文本字段中模拟退格动作?

  •  3
  • Brandon  · 技术社区  · 15 年前

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

    谷歌和各种论坛都在产生随机的结果。正确的方法是什么?

    4 回复  |  直到 8 年前
        1
  •  2
  •   Geuis    8 年前

    所以我猜你不是想把焦点放在文本输入上删除它。

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

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

    另一种方法是使用JS模拟被点击的退格字符键。您需要将焦点放在输入上,将光标移动到行尾,然后触发字符。

        2
  •  4
  •   Douwe Maan    15 年前

    这似乎在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')

        3
  •  1
  •   mohdajami    15 年前

    javascript,onclick

    var text = document.getElementById(myTxtBox).value;  
    text = text.substr(0,text,length-1);
    document.getElementById(myTxtBox).value = text;
    
        4
  •  0
  •   trejder tvCa    10 年前

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