jquery克隆表单字段和增量id

时间:2012-07-06 04:07:58

标签: javascript jquery

我有一个字段,我需要使用克隆按钮克隆并删除按钮以仅删除克隆的字段 我制作了这个简单的脚本,但我认为它包含了一些错误,因为它不起作用:)

HTML

<form method="post">
    <div id="fileds">
    <select name="lang" id='lang'>
    <option>select language</option>
    </select>
     </div>
    </form>
    <div class="actions">
        <button class="clone">Clone</button> 
        <button class="remove">Remove</button>
    </div>

JS

$(function(){
    var regex = /^(.*)(\d)+$/i;
    var cloneIndex = $("#lang").length;

    $("button.clone").live("click", function(){
        $(this).parents("#lang").clone()
            .appendTo(".fileds")
            .attr("id", "lang" +  cloneIndex)
            .find("*").each(function() {
                var id = this.id || "";
                var match = id.match(regex) || [];
                if (match.length == 3) {
                    this.id = match[1] + (cloneIndex);
                }
        });
        cloneIndex++;
    });


});

我也没有找到如何编写删除按钮的删除代码

谢谢

2 个答案:

答案 0 :(得分:2)

1)#lang不是.clone

的父级

2).fields应为#field,因为这是ID

此代码应该有效。直播Demo

$(function() {
    var counter = 1;

    $(".clone").live("click", function() {
        $("#lang:first").clone().appendTo("#fileds").addClass("lang" + counter);
        counter++
    });

    $(".remove").live('click', function() {
        if (counter > 1) { //Only apply if the lang field is more than 1
            counter = counter - 1;
            $("#lang:last").remove();
        }
    });

});​

答案 1 :(得分:0)

lang不是按钮的父级,我已经为删除按钮添加了一个类和一个处理程序,试试这个:

$(function(){
    $(".clone").on("click", function() { // you can use `on` instead of live which is deprecated 
        var cloneIndex = $(".lang").length; // you can find the the current length of `.lang` within the handler  
        $(".lang:last").clone() // clones the last element with class of `lang`
            .attr("id", "lang" +  cloneIndex)
            .appendTo("#fileds") // change this to id selector
        });
     $("button.remove").on("click", function(){ // '.remove' click handler
         $(".lang:last").remove()
     })  
});

DEMO