Создайте инкрементную форму на лету в jquery и при удалении замените на следующую в строке

0

Я играл с некоторым кодом для того, что кажется возрастом, теперь я, наконец, получил его на работу, но есть две проблемы с ним, насколько я могу это сделать.

Во-первых, если вы добавляете несколько форм, оно увеличивается, т.е. 1, 2, 3 и т.д., Поэтому, если я создам 3 формы и удаляю форму 2, я остаюсь с формами 1 и 3, если я затем перейду к добавлению другой формы, она будет дублировать форму 3, затем добавьте 4, 5, 6 и т.д.

Способ, которым я бы хотел, чтобы он работал, если вы удалите форму 2, форма 3 заменит все 3 в атрибутах и заменит их на 2, эффективно заменив форму 2.

Во-вторых, как только я обновляю страницу, формы удаляются, мне бы хотелось, чтобы формы имели значение для отображения.

Здесь скрипка: http://jsfiddle.net/33Ks6/

Здесь jquery:

// Add extra upload bars
$("#add").click(function() {
    var intId = $("#image_upload div").length + 1;
    var fieldWrapper = $("<div id=\"upload-image-set-" + intId + "\"/>");
    var fName = $("<input type=\"text\" id=\"show_upload_image_link_" + intId + " size=\"36\" name=\"kandibox_theme_hero_options[show_upload_image_link_" + intId + "]\" value=\" <?php echo $hero_options['show_upload_image_link_1']; ?> \" />");
    var mediaButton = $(" <input id=\"show_upload_image_link_" + intId + "_button\" class=\"button upload_images\" type=\"button\" value=\"Upload Image\" />");
    // Media Upload Button 1
var custom_uploader;
mediaButton.click(function(e) {
    e.preventDefault();
    //If the uploader object has already been created, reopen the dialog
    if (custom_uploader) {
        custom_uploader.open();
     return;
    }
    //Extend the wp.media object
    custom_uploader = wp.media.frames.file_frame = wp.media({
    title: 'Choose Image',
    button: {
        text: 'Choose Image'
    },
     multiple: false
});
//When a file is selected, grab the URL and set it as the text field value
custom_uploader.on('select', function() {
    attachment = custom_uploader.state().get('selection').first().toJSON();
    fName.val(attachment.url);
    });
    //Open the uploader dialog
    custom_uploader.open();
});
    var removeButton = $(" <input type=\"button\" class=\"remove\" value=\"-\" />");
    removeButton.click(function() {
        $(this).parent().remove();
    });
    fieldWrapper.append(fName);
    fieldWrapper.append(mediaButton);
    fieldWrapper.append(removeButton);
    $("#image_upload").append(fieldWrapper);
});
Теги:
increment

1 ответ

1
Лучший ответ
removeButton.click(function () {
    $(this).parent().remove();
    renameDivs();
});    

...

function renameDivs() {
    $('#image_upload div').each(function (k, v) {
        $(this).attr('id', 'upload-image-set-' + (k + 1));
    });
}

скрипка

  • 0
    Вау, это было быстро, я так хочу поставить это как ответ, но у меня есть еще одна необходимая часть, если у формы есть значение, уже отображаете ее?
  • 0
    Пожалуйста, уточните, что вы имеете в виду. Я рад помочь.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню