Привет, ребята, это может быть очень глупая ошибка, но я использую jquery для добавления набора форм на страницу, он также выполняет другие действия, такие как обновление количества форм, но это, похоже, не проблема.
$(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 вообще, похоже, это ответный макет бутстрапов, скрывающий формы, которые я думаю, если я добавлю их специально к их собственным строкам, я могу это исправить.
Спасибо за помощь, хотя ребята.
Я не вижу в файле файл src="*jQuery source*"
. Поскольку JSFiddle уже добавляет источник в файл, вы, возможно, забыли его вставить.