1

考虑这个 HTML:

<input type="text" name="userinput[]" />
<input type="text" name="userinput[]" />
<a href="javascript:void(0);">More</a>

这里的目的是让用户在表单字段中输入值,如果他们想要更多字段,单击链接将执行此 jQuery:

$('a').click( function(e) {
    e.preventDefault();
    $(this).before('<input type="text" name="team_names[]" />');

    //refocus on the first empty input
    $('input[value=""]:first').focus();
});

因此“用户 A”填写了两个表单域,单击“更多”链接,又添加了两个输入域,浏览器关注第三个整体域(因为它是第一个空域)。不幸的是,代码选择了第一个整体字段。我可以让它专注于最后一个输入字段......没问题......但是如果用户在填写其他字段之前多次单击“更多”,我仍然想专注于第一个空字段。

我错过了什么?

http://jsfiddle.net/TYjNE/1/

4

2 回答 2

6

您正在使用属性选择器,value但当值input更改时属性不会更新。

相反,遍历它们,只关注实际具有空值的那个:

$('input[name="userinput[]"]').each(function() {
    if ( this.value === '' ) {
        this.focus();
        return false;
    }
});

这是你的小提琴:http: //jsfiddle.net/TYjNE/2/

于 2013-09-10T23:40:28.830 回答
1

下面的代码将帮助您从表单上所有输入字段的列表中查找第一个输入字段是否为空。

 $(document).ready(function(){

     $('a').click( function(e) {
      e.preventDefault();
      $('<input type="text" name="team_names[]" />').insertBefore(this);

    $('input[type="text"]').each(function() {
    if ( this.value === '' ) {
        this.focus();
        return false;
       }
     });
   });
  });

我希望你想要这个。它可以帮助您找到第一个空字段。这是小提琴检查。http://jsfiddle.net/TYjNE/4/

于 2013-09-11T02:39:46.363 回答