我通过以下方法检查表单中的空值
$("#reservationForm").find("input[type=email], input[type=tel], input[type=text]").filter(function(){
if($(this).val() == ""){
$(this).css("border","solid 1px red").after('Please fill in your '+this.id+'');
f.preventDefault();
}
现在我想提高可用性并将焦点设置为第一个空字段,但这就是问题所在。我尝试了以下所有方法,但每次只有 last 空字段获得焦点
$(this).eq(0).focus();
$(this:first).focus();
$(this:first-child).focus();
如何将焦点自动设置到第一个空白字段?
答案 0 :(得分:4)
您需要将.filter()
整体放在最后,如下所示:
$("#reservationForm").find("input[type=email], input[type=tel], input[type=text]").filter(function(){
if($(this).val() == ""){
$(this).css("border","solid 1px red").after('Please fill in your '+this.id+'');
f.preventDefault();
return true;
}
}).first().focus();
这样您就可以获得与过滤器匹配的.first()
个元素。 return true
非常重要,因为只有那些 为空的元素才会在调用.filter()
之后留在集合中...目前您正在使用它作为{{ {3}}致电。
当你将它设置为最后一个原因this
是每个元素,当你迭代时,所以它集中了所有这些,并且无论哪个运行最后是焦点留下的那个...而是你想得到一个空的集合并聚焦那些元素的第一个。