我已经对此进行了一些搜索。发现大量的脚本可以统计字符,甚至可以计算单词,但是找不到可以删除超过单词限制的单词的脚本....
到目前为止,这是我的脚本......:
var maxWords = 10;
function countWordsLeft(field) {
totalWords = field.value.split(' ');
if (totalWords.length > maxWords)
field.value = field.value.substring(0, maxWords);
else
document.getElementById('description_count').innerHTML = maxWords - totalWords.length;
}
我从字符计数脚本中复制了以下行,但显然这不会起作用,因为我在计算单词
if (totalWords.length > maxWords)
field.value = field.value.substring(0, maxWords);
如何让脚本删除超出限制的任何额外单词?我需要这个特别是如果他们粘贴在描述中...它需要计算单词然后删除超过限制的任何单词。
感谢您的帮助!
答案 0 :(得分:4)
field.value = field.value.split(' ').splice(0, maxWords).join(' ');
<强>更新强>
我注意到这也将n
个空格连续计为n-1
个单词,由此修复:
var a = field.value.split(' ');
var words=0, i=0;
for(; (i<a.length) && (words<maxWords); ++i)
if(a[i].length) ++words;
field.value = a.splice(0,i).join(' ');
答案 1 :(得分:4)
jQuery Simply Countable插件
为任何文本输入或文本区域提供字符或单词计数器(和限制器)。键入或粘贴文本时工作。
@version 0.4.2
@homepage http://github.com/aaronrussell/jquery-simply-countable/
@author Aaron Russell http://www.aaronrussell.co.uk
版权所有(c)2009-2010 Aaron Russell
在麻省理工学院http://www.opensource.org/licenses/mit-license.php下获得双重许可
和GPL http://www.opensource.org/licenses/gpl-license.php许可证。
答案 2 :(得分:3)
我可能会用这个:
var maxWords = 10;
function limitLengthInWords(field) {
var value = field.value,
wordCount = value.split(/\S+/).length - 1,
re = new RegExp("^\\s*\\S+(?:\\s+\\S+){0,"+(maxWords-1)+"}");
if (wordCount >= maxWords) {
field.value = value.match(re);
}
document.getElementById('description_count').innerHTML = maxWords - wordCount;
}
这将保留开头和单词之间的空白。
答案 3 :(得分:2)
这很好帮助
function limit_words($post_content, $word_limit=30)
{
$words = explode(" ",$post_content);
return implode(" ",array_splice($words,0,$word_limit));
}
答案 4 :(得分:1)
<script language="javascript" type="text/javascript">
function limitText(limitField, limitCount, limitNum) {
if (limitField.value.length > limitNum) {
limitField.value = limitField.value.substring(0, limitNum);
} else {
limitCount.value = limitNum - limitField.value.length;
}
}
</script>
答案 5 :(得分:0)
function wordlimit(s, n){
var rx= RegExp('([a-zA-Z]+\\S+\\s+){'+n+'}','g');
while(rx.test(s)){
return s.substring(0, rx.lastIndex);
}
return s;
}
<强> //测试强>
s= 'the quick red fox jumps over the lazy brown dog\'s back';
alert(wordlimit(s, 8));
// field.value = wordlimit(field.value,8);
答案 6 :(得分:0)
或者你可以这样做:
function truncateStringToMaxWords(string, maxWords)
{
var whitespace = string.match(/\s+/g);
var words = string.split(/\s+/);
var finished = [];
for(var i = 0; i < maxWords && words.length > 0; i++)
{
if (words[0] == "") { i--; }
finished.push(words.shift());
finished.push(whitespace.shift());
}
return finished.join('');
}
field.value = truncateStringToMaxWords(field.value, 5);
哪会保持你的空白不变。
答案 7 :(得分:0)
此功能将限制,不再允许使用单词:
function limitWords(id) {
var maxWords=5;
var d=document.getElementById(id);
if ( d.value.split(' ').length > maxWords ) {
t=d.value.substring(0,d.value.lastIndexOf(' '));
d.value=t.substring(0,t.lastIndexOf(' ')+1);
}
}
示例HTML
<textarea id='txt' rows="2" onkeyup="limitWords(this.id)"></textarea>
答案 8 :(得分:0)
我这样做了
function limitWord(myString, limit){
return myString
.replace(/\s+/g, ' ') // remove extra spaces between words
.split(' ') // split string into array (using spaces as seperator)
.splice(0, limit) // splice the array to the desired word limit
.join(' '); // join it back into string (using spaces as seperator)
}