jQuery 如何计算有多少文本区域有值? (不是空的)

jQuery How to count how many textareas have value? (not empty)

假设我有 10 个这样的文本区域:

<textarea name="seek[]"></textarea>

用户写了一些,我想检查它们是否超过3个,这是我的尝试:

if($('textarea[value!=""]').length > 3) $('.result').val('more than 3');
else  $('.result').val('less than 3');

这不起作用,因为文本区域不适用于 "value" 属性,那么,如何正确计算它们?

P.S.: 我想避免创建 .each(),检查它们的值并将它们累加到计数器变量中。

--- 已编辑 ---

片段给我一个错误,所以我做了一个代码笔:https://codepen.io/anon/pen/vaNRbV


$('textarea').change(function(){
    if($('textarea[value!=""]').length > 3) $('.result').val('more than 3');
    else  $('.result').val('less than 3');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<div>
Result: <input class="result" >
</div>

我建议你使用 jquery 的过滤器,这样你就可以这样做:

$("textarea").filter(function(){ return $(this).val(); }).length;

举个例子:

$(function(){
  console.log("More than 3 => " + $("textarea").filter(function(){ return $(this).val().length >= 3 }).length);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="seek[]">Example text</textarea>
<textarea name="seek[]">Example text</textarea>
<textarea name="seek[]">Example text</textarea>
<textarea name="seek[]">Example text</textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]">Example text</textarea>
<textarea name="seek[]"></textarea>
<textarea name="seek[]"></textarea>