Jquery 动态添加多个文本框中的问题

Jquery 动态添加多个文本框中的问题,jquery,html,textbox,jquery-effects,Jquery,Html,Textbox,Jquery Effects,有两个内联文本框,它们旁边有一个“+”符号。 单击加号后,将添加一个新的文本框,它将具有 用于添加和删除文本框的“+”和“-”符号 分别地我使用资源来实现我的文本框。 现在,我只想为每一个添加10个文本框。意思是10 关键字[]的文本框和链接名称[]的10个文本框 请参见输入标记名称中的。但是这个代码不起作用 如果我继续为关键字[]添加文本框,则会显示19个文本框 添加,然后如果我尝试为link_name[]添加文本框,则 不添加单个文本框并显示达到的最大限制。 如果添加操作完成,反之亦然,则其

有两个内联文本框,它们旁边有一个“+”符号。 单击加号后,将添加一个新的文本框,它将具有 用于添加和删除文本框的“+”和“-”符号 分别地我使用资源来实现我的文本框。 现在,我只想为每一个添加10个文本框。意思是10 关键字[]的文本框和链接名称[]的10个文本框 请参见输入标记名称中的。但是这个代码不起作用

如果我继续为关键字[]添加文本框,则会显示19个文本框 添加,然后如果我尝试为link_name[]添加文本框,则 不添加单个文本框并显示达到的最大限制。

如果添加操作完成,反之亦然,则其工作正常

  • 另一个问题是反弹效果不起作用。不多 熟悉效果,因此无法找到其原因 工作
  • jQuery和HTML如下所示:

    jQuery

    $(document).ready(function() {
        var id_1 = 2, max = 9, append_data;
        /*TEXT BOXES FOR LINK NAMES*/   
        /*If add_1 icon was clicked*/
        $("#add_1").live('click', function(){
            if($("div[id^='txt_']").length <9){ //Don't add new text box if limit is reached
                $(this).remove(); //remove add icon from the current text box
                var append_data = '<div id="txt_'+id_1+'" class="txt_div" style="display:none;"><div class="left"><input type="text" id="input_'+id_2+'" name="link_name[]"/></div><div class="right"><img src="add.png" id="add_1"/> <img src="remove.png" id="remove_1"/></div></div>';
                $("#textboxes_1").append(append_data); //append new text box in main div
                $("#txt_"+id_1).effect("bounce", { times:3 }, 300); //display block appended text box with silde down
                id_1++;
            }
            else{
                alert("Maximum 10 textboxes are allowed");  
            }
        })
        $("#remove_1").live('click',function(){
            var prev_obj = $(this).parents().eq(1).prev().attr('id'); //prev div id of this text_box
            $(this).parents().eq(1).slideUp('medium', function() { $(this).remove(); //remove this text box with a slide up
            if($("div[id^='txt_']").length >1){
                append_data = '<img src = "remove.png" id = "remove_1"/>';
            }
            else{
                append_data = '';
            }
            if($("#add_1").length< 1){
                $("#"+prev_obj+" .right").html('<img src = "add.png" id = "add_1"/>'+append_data);
            }
            });
        })
    
    /*TEXT BOXES FOR KEYWORDS*/
    
        /*If add_2 icon was clicked*/
        var id_2 = 12, max = 19;
        $("#add_2").live('click', function(){
            if($("div[id^='txt_']").length <19){ //Don't add new text box if limit is reached
                $(this).remove(); //remove add icon from the current text box
                var append_data = '<div id="txt_'+id_2+'" class="txt_div" style="display:none;"><div class="left"><input type="text" id="input_'+id_2+'" name="keyword[]"/></div><div class="right"><img src="add.png" id="add_2"/> <img src="remove.png" id="remove_2"/></div></div>';
                $("#textboxes_2").append(append_data); //append new text box in main div
                $("#txt_"+id_2).effect("bounce", { times:3 }, 300); //display block appended text box with silde down
                id_2++;
            }
            else{
                alert("Maximum 10 textboxes are allowed");  
            }
        })
        $("#remove_2").live('click',function(){
            var prev_obj = $(this).parents().eq(1).prev().attr('id'); //prev div id of this text_box
            $(this).parents().eq(1).slideUp('medium', function() { $(this).remove(); //remove this text box with a slide up
            if($("div[id^='txt_']").length >1){
                append_data = '<img src = "remove.png" id = "remove_2"/>';
            }
            else{
                append_data = '';
            }
            if($("#add_2").length< 1){
                $("#"+prev_obj+" .right").html('<img src = "add.png" id = "add_2"/>'+append_data);
            }
            });
        })
    });
    
    $(文档).ready(函数(){
    变量id_1=2,最大值=9,追加_数据;
    /*链接名称的文本框*/
    /*如果单击了add_1图标*/
    $(“添加1”).live('单击',函数()){
    if($((“div[id^='txt_'])长度1){
    附加_数据=“”;
    }
    否则{
    附加_数据=“”;
    }
    如果($(“#加2”)。长度<1){
    $(“#”+prev_obj+“.right”).html(“”+append_data);
    }
    });
    })
    });
    
    HTML

    <div id="textboxes_1" class="inline">
        <div id="text_1" class="text_div">
            <div class="left">
                <input type="text" id="input_1" value="Enter URL(s) here" name="link_name[]" />
            </div>
            <div class="right">
                <img src="add.png" id="add_1" />
            </div>
        </div>
    </div>
    <div id="textboxes_2" class="inline">
        <div id="text_11" class="text_div">
            <div class="left">
                <input type="text" id="input_11" value="Enter Keyword(s) here" name="keyword[]" />
            </div>
            <div class="right">
                <img src="add.png" id="add_2" />
            </div>
        </div>
    </div>
    <div style="clear:left;"></div>
    <input type="submit" id="submit" name="submit" value="SUBMIT">
    

    好的,所以答案很简单,您犯了一些逻辑错误,下面是您的代码以及注释中描述的一些修复:

    $(document).ready(function() {
    var id_1 = 2, max = 9, append_data;
    /*TEXT BOXES FOR LINK NAMES*/   
    /*If add_1 icon was clicked*/
    $("#add_1").live('click', function(){
        if($("#textboxes_1 input").length <10){ //Don't add new text box if limit is reached
    // Here You have to check #textboxes_1 for his own input's, and You have to give 10 not 9, becouse lenght is allways actual number of elements
    
            $(this).remove(); //remove add icon from the current text box
            var append_data = '<div id="txt_'+id_1+'" class="txt_div"><div class="left"><input type="text" id="input_'+id_1+'" name="link_name[]"/></div><div class="right"><img src="add.png" id="add_1"/> <img src="remove.png" id="remove_1"/></div></div>';
    // in the code abowe You give id="input_'+id_2+'", I belive it should be id="input_'+id_1+'"
            $("#textboxes_1").append(append_data); //append new text box in main div
            $("#txt_"+id_1).effect("bounce", { times:3 }, 300); //display block appended text box with silde down
            id_1++;
        }
        else{
            alert("Maximum 10 textboxes are allowed");  
        }
    })
    $("#remove_1").live('click',function(){
        var prev_obj = $(this).parents().eq(1).prev().attr('id'); //prev div id of this text_box
        $(this).parents().eq(1).slideUp('medium', function() { $(this).remove(); //remove this text box with a slide up
        if($("div[id^='txt_']").length >1){
            append_data = '<img src = "remove.png" id = "remove_1"/>';
        }
        else{
            append_data = '';
        }
        if($("#add_1").length< 1){
            $("#"+prev_obj+" .right").html('<img src = "add.png" id = "add_1"/>'+append_data);
        }
        });
    })
    
    /*TEXT BOXES FOR KEYWORDS*/
    
    /*If add_2 icon was clicked*/
    var id_2 = 12, max = 19;
    $("#add_2").live('click', function(){
        if($("#textboxes_2 input").length <20){ //Don't add new text box if limit is reached
    // The same issue was here as well
    
            $(this).remove(); //remove add icon from the current text box
            var append_data = '<div id="txt_'+id_2+'" class="txt_div" ><div class="left"><input type="text" id="input_'+id_2+'" name="keyword[]"/></div><div class="right"><img src="add.png" id="add_2"/> <img src="remove.png" id="remove_2"/></div></div>';
            $("#textboxes_2").append(append_data); //append new text box in main div
            $("#txt_"+id_2).effect("bounce", { times:3 }, 300); //display block appended text box with silde down
            id_2++;
        }
        else{
            alert("Maximum 10 textboxes are allowed");  
        }
    })
    $("#remove_2").live('click',function(){
        var prev_obj = $(this).parents().eq(1).prev().attr('id'); //prev div id of this text_box
        $(this).parents().eq(1).slideUp('medium', function() { $(this).remove(); //remove this text box with a slide up
        if($("div[id^='txt_']").length >1){
            append_data = '<img src = "remove.png" id = "remove_2"/>';
        }
        else{
            append_data = '';
        }
        if($("#add_2").length< 1){
            $("#"+prev_obj+" .right").html('<img src = "add.png" id = "add_2"/>'+append_data);
        }
        });
    })
    
    $(文档).ready(函数(){
    变量id_1=2,最大值=9,追加_数据;
    /*链接名称的文本框*/
    /*如果单击了add_1图标*/
    $(“添加1”).live('单击',函数()){
    如果($(“#文本框_1输入”)。长度1){
    附加_数据=“”;
    }
    否则{
    附加_数据=“”;
    }
    如果($(“#加1”)。长度<1){
    $(“#”+prev_obj+“.right”).html(“”+append_data);
    }
    });
    })
    /*关键字的文本框*/
    /*如果单击了add_2图标*/
    变量id_2=12,最大值=19;
    $(“添加2”).live('单击',函数()){
    
    如果($(“#文本框_2输入”).length作为反弹效果,你需要@JonathandeM。我使用了
    jquery ui.min.js
    。它提供了反弹效果。但在我的代码中,它没有呈现效果。我链接了问题中的一个资源,效果在他们展示的演示中起作用。你能给我们链接,包括CSS和图像路径到你的服务器,或者至少t:
    .right img{background:red;width:30px!important;height:30px!important;}
    @bumerang我正在使用localhost。如果您想要css,它就是->您可以从我在问题中提到的资源中获得这两个图像。我还删除了代码
    style=“display:none”
    查看结果。在关键字的文本框中,长度应为10。保留它20将添加20条记录!此外,我在删除文本框时遇到了一些问题。但是,如您所述更改选择器解决了问题。请检查我所提到的资源的演示。单击
    +
    符号时出现的反弹效果不是h在我的例子中出现。文本框之间的间距也不像演示中那样。这就是我的文本框@SilentAssassin-在关键字的文本框中长度应该是10的方式。保持它20会添加20条记录!-是的,但这是你的代码,对于这些间隙,这是因为你附加到这些新元素的类,你给了em
    txt\u div
    ,类,但你应该给出
    text\u div
    ,就像第一个haveYes一样,反弹效应现在也在发生。有一些命名不一致。因此我很高兴我能提供帮助:)