计算文本块中的单词数可能很麻烦。用户倾向于创建空白区域,这些空白区域可能会丢弃大多数未考虑到的脚本。
我已经为#创建了一个工具!代码,该代码查看表单的文本区域,并以相同的形式将单词数打印到输入框中。textCounter()每次按下键时,textarea都会调用一个函数。这是表格的HTML。
<form onsubmit="return false;" action="" id="wordCountCalc"> <textarea name="message1" rows="10" cols="68" onkeydown="textCounter()" onkeyup="textCounter()"></textarea> <input readonly="readonly" size="15" type="text" name="len" maxlength="10" value="0" /> </form>
该功能通过删除文本开头的任何空格来起作用。然后,它会在从文本中删除所有制表符之前,先将一个或多个空格字符分割为文本。
第一步是检测由于不同浏览器将字符串之间用空格分隔开之间的差异,用户正在浏览哪个浏览器。以下代码段用于检测浏览器。
var sUserAgent = navigator.userAgent; var isOpera = sUserAgent.indexOf("Opera")>-1; var isIE = sUserAgent.indexOf("compatible")>1 && sUserAgent.indexOf("MSIE")>1 && !isOpera;
这是计算textarea元素中字符数的函数。
function textCounter(){ var area = document.getElementById('wordCountCalc'); var formcontent; if(area.message1.value.length != 0){ var reg; reg = /^\s/gi; formcontent = area.message1.value.replace(reg,''); // 删除开头或字符串的空白 reg = /\t+/g; formcontent = formcontent.replace(reg,' '); // 删除任何制表符 reg = /\s+/g; formcontent = formcontent.split(reg); // 用空格分割字符串 if ( isIE ) { area.len.value = formcontent.length; } else { if ( area.message1.value.charAt(area.message1.value.length-1)==' ' || area.message1.value.charAt(area.message1.value.length-1)=='\n' ) { area.len.value = formcontent.length-1; } else { area.len.value = formcontent.length; }; }; }else{ area.len.value = 0; }; };
在单词数工具页面上自己尝试一下。它已经过相当广泛的测试,但是如果您发现任何问题或错误,请发表评论。