zoukankan      html  css  js  c++  java
  • div模拟文本输入框做字数限制 用substr限制 当字数达到后光标会回到开头 用range对象限制但是删除

    <div class="textarea textareaplace" id="userinfo" contenteditable="true" onkeydown="keyD(this);" onkeyup="keyAction(this);" oncopy="keyCop();" onpaste="keyPas()"></div>

    js代码
    var textbox = document.getElementById('userinfo'),
    g_selectNum=0,
    sel = window.getSelection(),
    range = document.createRange();


    function keyD(obj){   //按下事件
      var a=textbox.innerHTML;

      var textA=textbox.innerText.substr(0,20);
      range.selectNodeContents(textbox);  //将div节点内容加进range内
      range.collapse(false);
      sel.removeAllRanges();
      sel.addRange(range);     //j将range对象加入文本域
    }


    function keyPas(){
      var textA=textbox.innerText.substr(0,20);
      setTimeout(function(){
        var a=textbox.innerHTML;
        textbox.innerText=a.replace(/<span.*">|</span>/g, "");   //将复制内容中span标签替换
        range.selectNodeContents(textbox);
        range.collapse(false);
        sel.removeAllRanges();
        sel.addRange(range);
      },300)
    };


    function keyCop(obj){
      var textA=textbox.innerText.substr(0,20);
      a_num=textA.length;
      var selectCon=sel.toString();
      g_selectNum=selectCon.length;
    }


    function keyAction(obj) {
      var textA=textbox.innerText.substr(0,20);
      a_num=textA.length;
      a_arr[1]=a_num;
      textbox.innerText=textA;
      range.selectNodeContents(textbox);
      range.collapse(false);
      sel.removeAllRanges();
      sel.addRange(range);
    }

  • 相关阅读:
    2021.12.7
    2021.12.13(观察者模式c++)
    2021.12.05(echarts生成mysql表词云)
    2021.12.10(申请加分项)
    2021.12.10(课程总结)
    2021.12.11(Linux,yum错误,There are no enabled repos.)
    12月读书笔记02
    2021.12.12(springboot报ScannerException)
    2021.12.09
    centos国内镜像站
  • 原文地址:https://www.cnblogs.com/BluceLee/p/12100034.html
Copyright © 2011-2022 走看看