我正在尝试计算用户在文本区域中输入了多少字
$("#word_count").on('keyup', function() {
var text = $(this).val;
word_c = $.trim(text).split(' ').length;
$('#display_count').text(word_c);
});
但是我总是得到错误的结果。我错过了什么?
我正在尝试计算用户在文本区域中输入了多少字
$("#word_count").on('keyup', function() {
var text = $(this).val;
word_c = $.trim(text).split(' ').length;
$('#display_count').text(word_c);
});
但是我总是得到错误的结果。我错过了什么?
两个问题:
val
jQuery 对象的属性,而不是val()
方法(括号不是可选的),并且您在以下行中声明了一个全局变量,纠正了这一点:
$("#word_count").on('keyup', function () {
var text = $(this).val(),
word_c = $.trim(text).split(' ').length;
$('#display_count').text(word_c);
});
此外,您的代码中存在多个空白字符导致错误结果的问题(在上面的演示类型中,输入 'one[space][space][space]two' 并且计数将为 4);纠正这一点:
$("#word_count").on('keyup', function () {
var text = $(this).val(),
word_c = $.trim(text).split(/\s+/).length;
$('#display_count').text(word_c);
});
允许字数限制:
$("#word_count").on('keydown', function (e) {
var text = $(this).val(),
words = $.trim(text).split(/\s+/),
word_c = words.length;
$('#display_count').text(word_c);
return word_c < 21 || e.which == 8;
});
参考:
更改这行代码!
var text = $(this).val();
感谢先生。托马斯,这就是你需要的
$("#word_count").on('keyup', function () {
var text = $(this).val(),
word_c = $.trim(text).split(/\s+/).length;
$('#display_count').text(word_c);
});
对于您对限制的评论,您可以这样做
$("#word_count").on('keydown', function () {
var text = $(this).val(),
word_c = $.trim(text).split(/\s+/).length;
$('#display_count').text(word_c);
if(word_c > 19)
return false;
});
$("#word_count").on('keyup', function() {
var text = $(this).val();
word_c = $.trim(text).split(' ').length;
$('#display_count').text(word_c);
});
您在 $(this).val 上缺少括号
尝试这个:
$("#word_count").on('keyup', function() {
var text = $(this).val();
word_c = $.trim(text).split(/[ ]+/).length;
$('#display_count').text(word_c);
});
它还考虑由多个空格分隔的单词。拆分接受正则表达式。