Jquery 它没有';如果一个文本区域为空或少于5个字符,则不显示警报
下面是我的代码,它假设验证文本区域是空的或包含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...
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
语句可以压缩为一个$(".textAreaQuestion").each(function() {
if (!this.value || this.value.length < 5) {
alertValidation += "\nYou have not entered a valid Question\n";
}
});