jQuery Невозможно обработать клонированные поля ввода - PullRequest
3 голосов
/ 11 марта 2012

У меня есть некоторый код для клонирования поля ввода, непосредственно предшествующего клонированной «кнопке», переименовывая идентификатор и имя поля, как оно идет (показано ниже): -

$(".clone").live('click', function () {
var doppleganger = $(this).prev(); // Neater referencing.
    $(doppleganger).clone().insertAfter(doppleganger);

$(this).prev().attr("id", "input" + increment).attr("name", "input" + increment);

    increment++;

return false;

});

. Данные формы (#adv_magic) загружаются на лету с событием jquery ajax и отправляются следующим образом: -

$("#adv_magic").live('submit', function() {

$("#editor_button, #date_select, #search").hide();
$(".loader").show();

$.ajax({
    type: "POST",
    url: "./scripts/aquire_template.php",
    data: $("#adv_magic").serialize(),
    success: function(html){
        $("#right_container").empty();
        $(".loader").fadeOut(350);
            $("#right_container").html(html);
    }
});
return false;

});

Однако мои клонированные поля ввода не обрабатываются, когда форма публикуется в моем сценарии. Я видел несколько руководств по созданию полей ввода в виде массива, но я бы не стал возиться с этим на этом этапе, если есть что-то еще, что я могу сделать.

Мне также интересно, связано ли это с тем, как я сериализую форму? Я не могу опубликовать полный код или ссылку по этому поводу, к сожалению, поскольку приложение недоступно из Интернета. Любые мысли по этому поводу будут по достоинству оценены! Я в тупике!

Обновление сб 10-е 20:31 GMT> Я получил следующий отчет из консоли> вкладка сообщения в Firebug: -

input1  meeting
input2  select date
input3  enter text
input5  NUMBER MISSING
input6  enter text
input7  test
switch  1

Source
input1=meeting&input2=select+date&input3=enter+text&input6=enter+text&input7=test&input5=NUMBER+MISSING&switch=1

Входные данные 5/6/7 являются клонированными элементами, поэтому, предположительно, они передаются в сценарий?

Обновление сб 10-го 21:06 по Гринвичу> Вывод строковой переменной до ее обработки скриптом показывает отсутствие клонированных полей ввода.

1 Ответ

1 голос
/ 11 марта 2012

Этот работал для меня.

<form id="myForm">
    <fieldset>
        <input type="text" id="input1" name="input1"/><input type="button" value="clone" class="clone"/>
    </fieldset>
    <input type="submit" value="submit" id="sbmt"/>
</form>


$(".clone").live("click", function(e) {
    var count = $("#myForm fieldset").length + 1;
    $(this).parent().clone().insertBefore("#sbmt").find("input[type=text]").attr({
        "id": "input" + count,
        "name": "input" + count
    }).val("");
});


$("#myForm").submit(

function(e) {
    e = e || window.event;
    e.preventDefault();

    $.ajax({
        type: "GET",
        url: "/",
        data: $("#myForm").serialize(),
        success:function(data){
        }
    });
    return false;

});

демо: http://jsfiddle.net/wFzx5/2/

...