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



让我们想象一下我有10个像这样的文本区域:

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

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

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

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

附言:我想避免做.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>

最新更新