I'm trying to create a HTML5 contenteditable div, which only accept a plain text. I'm using html and jQuery below:
HTML
<div contenteditable="true"></div>
jQuery
(function () {
$('[contenteditable]').on('paste', function (e) {
e.preventDefault();
var text = null;
text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('Paste Your Text Here');
document.execCommand("insertText", false, text);
});
});
But it's not working for all browsers. getData
not support in Internet Explorer browser. I tried a lot of solutions mention here on stackoverflow, But none worked for me.
I also tried
(function () {
$('[contenteditable]').on('paste', function (e) {
e.preventDefault();
var text = null;
if (window.clipboardData && clipboardData.setData) {
text = window.clipboardData.getData('text');
} else {
text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('Paste Your Text Here');
}
document.execCommand("insertText", false, text);
});
});
But in that case document.execCommand("insertText", false, text);
is not working for IE.
Is there any way to make it possible to accept data after filter HTML tags, So that anyone enters data in editable div by type, paste, drop, or any other way. It should display it as text.
Hi, I\'m HTML
').text();`. That should give you `Hi, I'm HTML`. – Chris Peters Jun 25 '14 at 12:05