在contenteditable html编辑器中限制文本(不包括HTML)

时间:2016-10-17 16:56:05

标签: javascript html

我试图限制作为HTML编辑器的contenteditable div中的字符。 我需要限制为N(1500)个字符,不包括HTML。

所以我现在想出了这个:

 $(".minieditor-content").bind('click', function (event) {
                var length = $(".minieditor-content").text().length;
                if (length > 1499) {
                    angular.element(".minieditor-content").html(html_substr($(".minieditor-content").html(), 1499));
                }
            });

            function html_substr  (str, count) {

                var div = document.createElement('div');
                div.innerHTML = str;

                walk(div, track);

                function track(el) {
                    if (count > 0) {
                        var len = el.data.length;
                        count -= len;
                        if (count <= 0) {
                            el.data = el.substringData(0, el.data.length + count);
                        }
                    } else {
                        el.data = '';
                    }
                }

                function walk(el, fn) {
                    var node = el.firstChild;
                    do {
                        if (node.nodeType === 3) {
                            fn(node);
                            //          Added this >>------------------------------------<<
                        } else if (node.nodeType === 1 && node.childNodes && node.childNodes[0]) {
                            walk(node, fn);

                        }
                    } while (node = node.nextSibling);
                }
                return div.innerHTML;
            }

哪个效果很好。唯一的问题是如果我输入超过限制的更多字符,删除后,光标移动到段落的开头,它允许你键入,然后它删除段落的结尾。 也许Substringing是最好的选择。您对我的代码有什么建议/调整以使其有效?

由于

0 个答案:

没有答案