如何让contenteditable div只接受明文?

时间:2016-01-15 16:38:24

标签: javascript jquery html css

我有一个div作为textarea,因为div可以根据其中的文本改变它的高度,这里的问题是如果有人复制了一些样式文本(文本和HTML)并粘贴它,样式坚持文本, contenteditable='plaintext-only'可以解决问题,但它似乎只是一个仅限webkit的功能。

那么有没有办法只在div中允许文本?

供参考:https://jsfiddle.net/w25dnuen/

1 个答案:

答案 0 :(得分:2)

以下是根据您输入的内容增长的文本区域示例:

http://jsfiddle.net/janjarfalk/r3Ekw/

弹性文本区域工作的原因是外部jquery.elastic.source.js位于此处:http://jquery-elastic.googlecode.com/svn/trunk/jquery.elastic.source.js

现在,你已经看过这两个资源,让我们来谈谈它的作用。该脚本有一个“udpate”函数,它基本上只是在这里到达行末时添加空格:

// Add an extra white space so new rows are added when you are at the end of a row.
$twin.html(textareaContent+' ');

然后在这里你可以看到各自的功能:

// Updates the width of the twin. (solution for textareas with widths in percent)
            function setTwinWidth(){
                var curatedWidth = Math.floor(parseInt($textarea.width(),10));
                if($twin.width() !== curatedWidth){
                    $twin.css({'width': curatedWidth + 'px'});

                    // Update height of textarea
                    update(true);
                }
            }

            // Sets a given height and overflow state on the textarea
            function setHeightAndOverflow(height, overflow){

                var curratedHeight = Math.floor(parseInt(height,10));
                if($textarea.height() !== curratedHeight){
                    $textarea.css({'height': curratedHeight + 'px','overflow':overflow});
                }
            }

这都是弹性功能。希望这会给你一些洞察力并帮助你。