jQuery如何计算有多少textareas具有价值? (不是空的)

时间:2018-07-13 18:38:54

标签: javascript jquery textarea

让我们以为我有10个这样的文本区域:

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

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

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

这是行不通的,因为textareas不能与“ value”属性一起使用,那么,如何对它们进行计数是正确的方法?

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

---编辑---

代码段给我一个错误,所以我制作了一个Codepen: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>

1 个答案:

答案 0 :(得分:2)

我建议您使用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>