这是计算单词的脚本。
HTML 邮件: 总字数:0字。
jquery的
$(document).ready(function () {
$('#word_count').wordCount();
});
jQuery.fn.wordCount = function (params) {
var p = {
counterElement: "display_count"
};
var total_words;
if (params) {
jQuery.extend(p, params);
}
//for each keypress function on text areas
this.keypress(function () {
total_words = this.value.split(/[\s\.\?]+/).length;
jQuery('#' + p.counterElement).html(total_words);
});
};
答案 0 :(得分:6)
可以简化吗?
当然可以使用字边界匹配任何不是空格的东西:
$('#word_count').on('keyup', function() {
$('#display_count').text(this.value.split(/\b\S+\b/g).length-1)
});
这似乎是一个浪费使用插件的东西,可以很容易地完成?
答案 1 :(得分:0)
见:
您需要“修剪”您的值以确保没有前导/尾随空格(产生提到的+1)
我已将此处理程序附加到keyup
事件。
代码:
this.keyup(function () {
my_value = this.value.replace(/^\s+|\s+$/, '');
total_words = my_value.split(/[\s\.\?]+/).length;
jQuery('#' + p.counterElement).html(total_words);
});
答案 2 :(得分:-1)
我认为这是你正在使用的事件的问题。我建议你将函数绑定到change事件。
对于正则表达式,仅通过?:
进行拆分是不够的stringValue.split(/\s/);
最好的问候。