如何使用JQuery计算JavaScript中的字数

如何使用JQuery计算JavaScript中的字数,javascript,jquery,validation,word-count,Javascript,Jquery,Validation,Word Count,我有一个简单的html文本框。当我“提交”文本框所在的表单时,我希望使用Jquery获得一个包含单词数的变量。我还想检查输入的文本是否只有字母、数字和连字符(同样在jquery中)。我不需要在提交表单时将单词计算为用户类型。如果关闭jquery,表单将不会提交,因此我猜不使用php不会有安全风险。这是真的吗 HTML: 假设每个单词都由一个空格分隔,您将拆分字符串,然后计算结果数组的长度 $('input[type="submit"]').click( function() { var

我有一个简单的html文本框。当我“提交”文本框所在的表单时,我希望使用Jquery获得一个包含单词数的变量。我还想检查输入的文本是否只有字母、数字和连字符(同样在jquery中)。我不需要在提交表单时将单词计算为用户类型。如果关闭jquery,表单将不会提交,因此我猜不使用php不会有安全风险。这是真的吗

HTML:


假设每个单词都由一个空格分隔

,您将拆分字符串,然后计算结果数组的长度

$('input[type="submit"]').click( function() {
    var words = $('#name').val().split(' ');
    alert(words.length);
});

您可以指定多个字符来拆分源字符串:

$('input[type="submit"]').click( function() {
    var words = $('#name').val().split(/[\s\.,;]+/);
    console.log(words.length);
});

使用usign
$.trim()
删除字符串开头和结尾的空格非常有用。您可以使用
keyup
事件进行实时计数

$('#name').keyup(function(){
    var words = $.trim($(this).val()).split(' ');
    console.log(words.length);
});

其他答案稍有改进,如处理更多边缘情况。ie同时使用多个空格和标点符号,并正确处理文本开头和结尾的标点符号

var numOfWords = $('#name').val().replace(/^[\s,.;]+/, "").replace(/[\s,.;]+$/, "").split(/[\s,.;]+/).length;

它首先去掉文本开头和结尾的标点和空格,然后计算剩余的内容。显然,如果需要,可以添加更多标点符号(如感叹号)。

使用下面的正则表达式,我们可以删除任何类型的空白(单个或多个),以便计数非常准确

$('#name').keyup(function(){
   var wordCount = $(this).val().split(/[\s\.\?]+/).length;
   console.log(wordCount);
});
请参阅我开发的jQuery插件:


尝试使用JQuery计算JavaScript中的单词数

$(document).ready(function(){
    $("button").click(function(){
        var words = $.trim($("#name").val()).split(" ");
        alert(words.length);
    });
});

查看更多@

您可以使用JavaScript
split()
方法计算字符串中的字数。此方法只需将字符串按指定的字符(空格“”)拆分为子字符串数组。然后显示“单词”数组的长度

$('input[type="button"]').click( function() {
    var words = $('#name').val().split(" ");
    alert(words.length);
});

这里有一个例子:

我很确定这只是给出了字符数。我想找出我在事故中误读的单词数量
split
将字符串分隔为一个spacesval()数组。length返回一个数字,此处有错误。谢谢。有没有办法检查这些字符在jquery中是否仅为字母、数字和连字符?是的,您可能希望使用正则表达式。您可以运行测试,如果结果符合您的选择标准,则结果将为真/假。正则表达式不是我的强项,所以你可能想问一个新问题。无论如何,我会尝试一下。这不会很好地工作,因为你在单词之间的每一个空格都会被算作另一个单词,所以“帮助我”将是6个单词!!这可以正常工作,您可以添加额外的逻辑来处理任何其他字符串分隔符。这应该更好地命名为“如何使用JQuery计算JavaScript中的单词数”。“如果关闭JQuery,表单将不会提交,因此我猜不使用php不会有任何安全风险。这是真的吗?”-取决于您所说的“安全风险”是什么意思:您必须验证输入服务器端,因为恶意用户可以使用开发工具绕过客户端验证。客户机上的相同验证是一个可选的额外功能,用于改善用户体验。顺便说一句,这不是一个真正的jQuery问题,而是一个“普通”的JavaScript正则表达式和
.split()
问题。这里有一个纯JavaScriptI,我已经为您更新了我的答案@Toby Speight:)希望能有所帮助!这是一个更好的答案,因为它处理额外的空格字符,例如双空格。如果您使用的是textarea等,它还超越了问题的范围并处理行返回。
$('#name').keyup(function(){
   var wordCount = $(this).val().split(/[\s\.\?]+/).length;
   console.log(wordCount);
});
$(document).ready(function(){
    $("button").click(function(){
        var words = $.trim($("#name").val()).split(" ");
        alert(words.length);
    });
});
$('input[type="button"]').click( function() {
    var words = $('#name').val().split(" ");
    alert(words.length);
});