Jquery 它没有';如果一个文本区域为空或少于5个字符,则不显示警报

Jquery 它没有';如果一个文本区域为空或少于5个字符,则不显示警报,jquery,Jquery,下面是我的代码,它假设验证文本区域是空的或包含5个字符或更少 function validation() { var context = $('#optionAndAnswer'); var currenttotal = context.find('.answerBtnsOn').length; alertValidation= ""; // Note, this is just so it's declared...

下面是我的代码,它假设验证文本区域是空的或包含5个字符或更少

function validation() {

                var context = $('#optionAndAnswer');
    var currenttotal = context.find('.answerBtnsOn').length;    

    alertValidation= "";
        // Note, this is just so it's declared...

    var textAreaO = $(".textAreaQuestion");

    if (textAreaO.val() == ""){
        alertValidation += "\nYou have not entered a valid Question\n";
    } else if (textAreaO.val().length < 5){
        alertValidation += "\nYou have not entered a valid Question\n";
    }


    if(alertValidation != "")
    {
        alert(alertValidation);
        return false;
    }

     return true;
}
函数验证(){
变量上下文=$('optionandswer');
var currenttotal=context.find('.answerBtnsOn').length;
alertValidation=“”;
//请注意,这只是它的声明。。。
var textAreaO=$(“.textAreaQuestion”);
如果(textAreaO.val()=“”){
alertValidation+=“\n您没有输入有效的问题\n”;
}else if(textAreaO.val().长度<5){
alertValidation+=“\n您没有输入有效的问题\n”;
}
如果(alertValidation!=“”)
{
警报(警报验证);
返回false;
}
返回true;
}
问题是,假设我有两个文本区域具有相同的类(.textAreaQuestion),那么如果两个文本区域中的一个是空的或少于5个字符,则没有验证(没有出现警报),这是不正确的。仅当两个文本区域均为空或少于5个字符时才会显示。那么,如何处理这段代码,以便在许多textareas中有一个textarea为空或少于5个字符,然后显示警报


谢谢

如果选择器匹配多个元素,则调用
.val()
将仅返回匹配的第一个元素的值。如果要验证所有元素,则需要使用函数对所有元素进行迭代。

需要使用以下函数对
.textAreaQuestion
进行迭代:

var textAreaO=$(“.textAreaQuestion”);
textAreaO.each(函数(){
if($(this).val()==“”){
alertValidation+=“\n您没有输入有效的问题\n”;
}else if($(this.val().length<5){
alertValidation+=“\n您没有输入有效的问题\n”;
}
});
//...
该方法返回第一个匹配元素的值:

描述:获取匹配元素集中第一个元素的当前值

您应该遍历匹配的元素以单独处理它们。大概是这样的:

$(".textAreaQuestion").each(function() {
    if (!this.value || this.value.length < 5) {
        alertValidation += "\nYou have not entered a valid Question\n";
    }
});
$(“.textAreaQuestion”).each(函数(){
如果(!this.value | | this.value.length<5){
alertValidation+=“\n您没有输入有效的问题\n”;
}
});

因此我只需在if语句上方添加
$(“.textAreaQuestion”).each(function(){
)?基本上是的-尽管您可以执行
textAreaO.each(…)
因为您已经将选择器的结果保存到该变量中。代码其余部分的其他几点:对于
alertValidation
,您的初始声明中没有
var
关键字,但我认为它不是全局的。您的
if/else if
语句可以压缩为一个e> 如果语句带有OR条件,因为在这两种情况下执行的代码都是相同的。谢谢大家的回答,当我的声誉达到15时,我将对所有答案进行投票,因为所有答案看起来都是正确的
$(".textAreaQuestion").each(function() {
    if (!this.value || this.value.length < 5) {
        alertValidation += "\nYou have not entered a valid Question\n";
    }
});