选择第一个空表单字段

时间:2010-09-18 11:29:41

标签: jquery validation forms

我通过以下方法检查表单中的空值


      $("#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();

如何将焦点自动设置到第一个空白字段?

1 个答案:

答案 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每个元素,当你迭代时,所以它集中了所有这些,并且无论哪个运行最后是焦点留下的那个...而是你想得到一个空的集合并聚焦那些元素的第一个。