JQuery добавление форм, работает на JSFiddle, но в производстве не

0

Привет, ребята, это может быть очень глупая ошибка, но я использую jquery для добавления набора форм на страницу, он также выполняет другие действия, такие как обновление количества форм, но это, похоже, не проблема.

http://jsfiddle.net/b5Y8f/

$(document).ready(function () {
function updateElementIndex(el, prefix, ndx) {
    var id_regex = new RegExp('(' + prefix + '_set-\\d+-)');
    var replacement = prefix + '_set-' + ndx + '-';
    if ($(el).attr("for")) $(el).attr("for", $(el).attr("for").replace(id_regex, replacement));
    if (el.id) el.id = el.id.replace(id_regex, replacement);
    if (el.name) el.name = el.name.replace(id_regex, replacement);
}

function changeDeleteForms(el, prefix, formid) {
    var idstring = 'id_' + prefix + '_set-' + formid + '-DELETE';
    //$('<input>').attr({type: 'hidden', id: 'id_' + idstring, name: idstring}).appendTo('.command-delete');
    $('#' + idstring).prop('checked', true);
}

function deleteForm(btn, prefix) {
    var formCount = parseInt($('#id_' + prefix + '_set-TOTAL_FORMS').val());
    if (formCount > 1) {
        // Delete the item/form
        $(btn).parents('.command').hide();
        $(btn).parents('.command').attr('class', 'command-delete');
        var dc = $(".command-delete");
        $(dc).children().children().children().each(function () {
            var formid = this.id.match(/\d+/g);
            changeDeleteForms(this, prefix, formid);
            //$(this).val("");
        });
        var forms = $('.command'); // Get all the forms
        var formsdelete = $('.command-delete'); // Get all the forms 
        var fl = parseInt(forms.length);
        var fdl = parseInt(formsdelete.length);
        var finalcount = fl + fdl
        // Update the total number of forms (1 less than before)
        //$('#id_' + prefix + '_set-TOTAL_FORMS').val(forms.length);
        var i = 0;
    } // End if
    else {
        alert("Please enter atleast 1 command for this item.");
    }
    return false;
}

function addForm(btn, prefix) {
    var formCount = parseInt($('#id_' + prefix + '_set-TOTAL_FORMS').val());
    var maxCount = parseInt($('#id_' + prefix + '_set-MAX_NUM_FORMS').val());
    var forms = parseInt($('.command-delete').length); // Get all the forms 
    var newcount = formCount + forms;
    // You can only submit a maximum of 10 todo items
    if (newcount < maxCount) {
        // Clone a form (without event handlers) from the first form
        var row = $(".command:first").clone(false).get(0);
        // Insert it after the last form
        $(row).removeAttr('id').hide().insertAfter(".command:last").slideDown(300);

        // Remove the bits we don't want in the new row/form
        // e.g. error messages
        $(".errorlist", row).remove();
        $(row).children().removeClass("error");

        // Relabel or rename all the relevant bits
        $(row).children().children().children().children().each(function () {
            updateElementIndex(this, prefix, newcount);
            $(this).val("");
        });

        // Add an event handler for the delete item/form link 
        $(row).find(".delete").click(function () {
            return deleteForm(this, prefix);
        });
        // Update the total form count
        $("#id_" + prefix + "_set-TOTAL_FORMS").val(newcount + 1);
    } // End if
    else {
        alert("Sorry, you can only enter a maximum of 1000 items.");
    }
    return false;
}
// Register the click event handlers
$("#add").click(function () {
    return addForm(this, "itemcommands");
});

$(".delete").click(function () {
    return deleteForm(this, "itemcommands");
});

$('.command input:checkbox').hide();

});

Если вы перейдете к ссылке выше, вы увидите, что код работает отлично, он обновляет счет формы и добавляет новую форму с новым номером в id и все, но в процессе производства, когда вы нажимаете кнопку добавления в первые три раза не показывает, однако код входил на страницу, и форма технически там, но не показана.

в четвертый раз вы нажимаете кнопку, в которой она работает, и строка добавляется после последнего (".command") в элементе.

Что может заставить его работать на JSFiddle, но не на производстве?

-------------------ОБНОВИТЬ--------------------------

Кажется, если я удаляю переполнение, скрытое от 3, которое не отображается, когда вы нажимаете кнопку, первые 3 раза она отображает их в правильном месте.

Почему переполнение не должно быть удалено из первых трех строк формы, а остальное после штрафа?

---------------------- ОБНОВЛЕНИЕ -------------------------- Подумайте я нашел проблему, и ее ничего не делать с JQUERY вообще, похоже, это ответный макет бутстрапов, скрывающий формы, которые я думаю, если я добавлю их специально к их собственным строкам, я могу это исправить.

Спасибо за помощь, хотя ребята.

Теги:
forms

1 ответ

1

Я не вижу в файле файл src="*jQuery source*". Поскольку JSFiddle уже добавляет источник в файл, вы, возможно, забыли его вставить.

  • 0
    это находится на производственной площадке, и это работает, но не так, как должно.

Ещё вопросы

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