IE8下div编辑框输入中文,substring截取问题

一个div可编辑框,我需要在输入的字符大于10的时候,让输入框的内容保存为前十个字符。一下代码在谷歌浏览器内没有问题,但是到了IE8中我输入“11111111111”可以正常截取,但是输入“啊啊啊啊啊啊啊啊啊啊啊”显示的结果会变成一个“啊”。
在线等待,解决方法,还有,我并不是很确定问题出现在哪了。

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>

    </head>

    <body>
        <div id="myDiv" contenteditable="true" style="width: 100%; height: 80px; border: 1px solid #CCC;" onblur="myDivCalc()" onkeyup="myDivCalc()"></div>
        <script>
            function myDivCalc(){
                var str = $("#myDiv").text();
                if(str.length<=10){
                    
                }else{
                    var strJ = str.substring(0,10);
                    $("#myDiv").text(strJ);
                    set_focus(document.getElementById('myDiv'))
                }
            }
            //处理div光标在最后
            function set_focus(el){
                //el=el[0];  //jquery 对象转dom对象
                el.focus();
                if($.support.msie)
                {
                    var range = document.selection.createRange();
                    this.last = range;
                    range.moveToElementText(el);
                    range.select();
                    document.selection.empty(); //取消选中
                }
                else
                {
                    var range = document.createRange();
                    range.selectNodeContents(el);
                    range.collapse(false);
                    var sel = window.getSelection();
                    sel.removeAllRanges();
                    sel.addRange(range);
                }
            }
        </script>
    </body>

</html>
阅读 3k
3 个回答

本人更换了IE8下系统的输入法,由原有的微软输入法,更换成搜狗输入法。就没问题了。

在传递正值参数情况下,slice() 和 substring () 行为是一致的,substr()方法在第二个参数上会容易混淆

在传递负值参数情况下,slice() 方法是通过字符串长度相加,符合一般思维,substring()第二个参数转换为0会容易出问题,起始位置会容易变更,substr() 方法负值情况下会出现IE兼容性问题。

推荐问题