我在textarea上使用nicedit以允许丰富的编辑器功能。 我还想在textarea的末尾添加字符计数器,以便让用户在textarea中键入特定的字符数。我使用上面的代码,编辑器工作得很好。
<script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script>
<script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script>
由于
答案 0 :(得分:4)
那么,你只需要知道textarea中的字符数量吗?
您可以使用textarea的value的length属性获取:
textarea.value.length
以下是一个例子:
<textarea onkeyup="console.log(this.value.length)"></textarea>
这是一个字数统计检查。它不是万无一失的,但它会让你开始:
<textarea onkeyup="updateCounter(this)" onpropertychange="this.onkeyup()"></textarea>
<div id="limit"></div>
<script>
var limit = document.getElementById("limit");
function updateCounter(textarea) {
var len = textarea.value.length;
var max = 10;
if(max - len < 0) {
textarea.value = textarea.value.substring(0, max);
} else {
limit.innerHTML = max - len;
}
}
</script>
另外,请记住Stack Overflow是一个程序员帮助站点。我们会帮助解决编码问题,但我们不只是为人们编写程序(有很多网站可供选择;)。
答案 1 :(得分:2)
如果你想要一个NicEdit textarea的动态字符计数器,那么你应该意识到一个NicEditor(以及大多数/所有WYSIWYG HTML编辑器)是一个可编辑的div,并且div的内容仅在之后被添加到相关的textarea中。 div失去了焦点。我发现只是试图动态计算textarea中的字符不起作用。也许我做错了什么。无论如何,我确实得到了一个动态的NicEdit字符计数器,如下所示:
设置HTML页面以使用NicEdit:
<script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script>
<script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script>
添加对包含计数器功能的JavaScript文件的引用:
<script type="text/javascript" language="JavaScript" src="nicCount.js"></script>
nicCount.js的内容是:
function nicCount(editor, ctrId, maxChars) {
// Count characters remaining in the given nicEditor (editor), and update the given counter (ctrId)
counterObj = document.getElementById(ctrId);
if(counterObj) {
var content = editor.getContent();
if(maxChars - content.length <= 0) {
// if there are no characters remaining, display the negative count in red
counterObj.innerHTML = "<font color='red'>"+ (maxChars - content.length) + "</font>";
}
else { // characters remaining
counterObj.innerHTML = maxChars - content.length;
}
}
}
定义textarea,确保其具有唯一ID:
<textarea name='mytextarea1' id='mytextarea1
行= 10 cols = 100&gt;`
根据您希望计数器显示的位置,将以下HTML代码放在textarea代码的上方或下方。实际的计数器值也给出了唯一的ID:
<p><b id='mycounter1'>1000</b> characters remaining</p>
在textarea和counter行之后,我添加了以下HTML代码块,以动态调用我的:
<script type="text/javascript">
//<[!CDATA[
bkLib.onDomLoaded (function() {
var editor = nicEditors.findEditor('mytextarea1');
editor.getElm().onkeyup = function() { nicCount(editor, 'mycounter1', 1000); }
})
//]]
</script>
请注意,我的char计数器实际上是一个字符剩余计数器(具有1000个字符限制),因为我有兴趣在textarea上强制执行字符限制(并让用户知道他们仍然可以添加多少个字符),但它可以很容易地调整为一个真正的字符使用计数器。
我在FireFox 26和IE9中进行了测试。
答案 2 :(得分:0)
也遇到这个问题,经过一番搜索,我进入了这个解决方案:
$('body').on('keyup keydown focus','.nicEdit-selected', function (event) { $('#chars_text').text($(this).html().replace(/<\/?[^>]+(>|$)/g, "").length)});
chars_text id可以是例如。 SPAN元素放置在nicedit附近的任何位置 其他解决方案基于.text()。length,nicEdit使用html(),这带来了另一个问题 - 字符数也包括由nicEdit插入的TAGS,所以你必须先剥离它们。
希望得到这个帮助。