这是我的代码,用于检查tinymce contant的长度。
<script type="text/javascript" src="//tinymce.cachefly.net/4.0/tinymce.min.js"></script>
<script type="text/javascript">
window.onload = function () {
tinymce.init({
selector: 'textarea',
setup: function (ed) {
ed.on('keyup', function (e) {
var count = CountCharacters();
document.getElementById("character_count").innerHTML = "Characters: " + count;
});
}
});
}
function CountCharacters() {
var body = tinymce.get("Body").getBody();
var content = tinymce.trim(body.innerText || body.textContent);
return content.length;
};
function ValidateCharacterLength() {
var max = 4000;
var count = CountCharacters();
if (count > max) {
alert("Maximum " + max + " characters allowed.")
return false;
}
return;
}
</script>
它返回的长度没有(HTML标签),所以最大的大小是4000,但如果我把它的粗体,改变颜色,它是超过4000,所以不能存储在SQL中,我如何确定长度与HTML标签?
例如:这是粗体字的长度。请在此输入图片描述
但在SQL中,它的长度是:33。
我把代码改成如下所示
@model TinyEditorWithMVCApp.Models.Post
@{
ViewBag.Title = "AddPost";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Add new Post</h2>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>TintMCE App</title>
<script type="text/javascript" src="//tinymce.cachefly.net/4.0/tinymce.min.js"></script>
<script type="text/javascript">
window.onload = function () {
tinymce.init({
selector: 'textarea',
setup: function (ed) {
ed.on('keyup', function (e) {
var count = CountCharacters();
document.getElementById("character_count").innerHTML = "Characters: " + count;
});
}
});
}
function CountCharacters() {
var content = tinymce.activeEditor.getContent({format: 'raw'});
return content.length;
};
function ValidateCharacterLength() {
var max = 4000;
var count = CountCharacters();
if (count > max) {
alert("Maximum " + max + " characters allowed.")
return false;
}
return;
}
</script>
</head>
<body>
<div>
@using (Html.BeginForm("AddPost", "Home", FormMethod.Post))
{
<div>
@Html.TextBoxFor(model => model.AuthorName)
</div>
<div>
@Html.TextAreaFor(model => model.Body)
</div>
<div id="character_count">
</div>
<div>
<input type="submit" value="Save Post" onclick="return ValidateCharacterLength();" />
</div>
}
</div>
<div id="character_count">
</div>
</body>
</html>
我想,得到的结果是不正确的
它给我的字符8,即使它的(测试)必须是4,我不添加任何HTML标签。请在此输入图片描述
根据 文件 您可以阅读原始内容
// Get the HTML contents of the currently active editor
console.debug(tinymce.activeEditor.getContent());
// Get the raw contents of the currently active editor
tinymce.activeEditor.getContent({format: 'raw'});
// Get content of a specific editor:
tinymce.get('content id').getContent()
在你的情况下,我会尝试改变
function CountCharacters() {
var content = tinymce.activeEditor.getContent({format: 'raw'});
return content.length;
};
JSFiddle的例子。
<p><br data-mce-bogus="1"></p>
并给出长度为 30
example
作为输入,那么后面的html就是 <p>example</p>
和长度是 14
example
作为输入,那么html就是 例子
和长度是31
工作样本 JSFiddle.