让我们想象一下我有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>