Jquery自动追加新输入,防止上一个

Jquery自动追加新输入,防止上一个,jquery,append,Jquery,Append,我正在尝试构建一个发票表单,当最后创建的输入收到焦点时,自动创建下一个输入字段,例如,将标签插入 我有我想要的基本功能,但有一个问题。我只想在最后一个输入接收焦点时追加一个新字段,但当前如果之前的任何一个输入接收焦点,它也会追加一个新字段 我的想法是在最后一个字段中添加一个“新”类,然后在追加下一个输入时将其删除,但因为我在#invoice上使用的委托函数没有达到预期效果 $(函数(){ var wrapper=$(“.clone_services”);//输入包装器 var x=1;//初始

我正在尝试构建一个发票表单,当最后创建的输入收到焦点时,自动创建下一个输入字段,例如,将标签插入

我有我想要的基本功能,但有一个问题。我只想在最后一个输入接收焦点时追加一个新字段,但当前如果之前的任何一个输入接收焦点,它也会追加一个新字段

我的想法是在最后一个字段中添加一个“新”类,然后在追加下一个输入时将其删除,但因为我在#invoice上使用的委托函数没有达到预期效果

$(函数(){
var wrapper=$(“.clone_services”);//输入包装器
var x=1;//初始索引计数
$(“#发票”).on('focus','clone#u services',function(){
$('.new').focus(函数(){//在“添加输入”按钮上单击
$(this.removeClass('new');
$(包装器).append(“
”); }); });

}))

请查看更新的fiddle:

无需向2个元素添加
focus
事件。一个就够了

$(function() {
    var wrapper = $(".clone_services"); //Input wrapper
    var x = 1; //initial index count
      $('.clone_services').on('focus','.new' , function(){
            $(this).removeClass('new');
            $(wrapper).append('<br><input type="text" class="services new" name="services['+ x +']"/>');
          x++;
            }); 

});
$(函数(){
var wrapper=$(“.clone_services”);//输入包装器
var x=1;//初始索引计数
$('.clone_services')。on('focus','.new',function(){
$(this.removeClass('new');
$(包装器).append(“
”); x++; }); });
这个怎么样:

$(document).on('focus', '.clone_services > .new', function () {
    var $line = $(this).clone();
    $(this).removeClass('new').closest('.clone_services').append($line);
});

你可以把它和

$(document).on('blur', '.clone_services > *', function () {
    if ( $.trim( $(this).val()) === "" ) $(this).remove();
});

那太好了。但我不完全理解它是如何工作的。这个
.clone\u services>.new'
部分做什么?没关系。我没有意识到它是一个选择器。我想这是一个比符号更伟大的东西。@skribe我必须问这个问题:你得到两个对你有帮助的答案,但没有一个能帮助你。。。原因是什么?啊。现在我明白我的错误了。这正是我想要的。
$(document).on('blur', '.clone_services > *', function () {
    if ( $.trim( $(this).val()) === "" ) $(this).remove();
});