JQuery SerializeArray لا يلتقط عناصر النموذج التي تم إنشاؤها ديناميكيًا

StackOverflow https://stackoverflow.com/questions/3626384

سؤال

لقد حصلت على نموذج تم إنشاؤه ديناميكيًا باستخدام Ajax (حيث يجب أن تأتي بيانات عناصر النماذج من قاعدة بيانات) وأريد تسلسل عناصر النموذج لتقديمها بواسطة Ajax. أنا حاليًا فقط أختبر نظريتي باستخدام التعليمات البرمجية من موقع jQuery فقط لمعرفة ما إذا كان بإمكاني التقاط عناصر النموذج وهذا هو المكان الذي تكمن فيه المشكلة:

$(document).ready(function() {
    $('#btnCustomSearch').live('click', function() {
            $('#results').html('');
            alert($('#customSearchTable :input').serializeArray());
            // get all the inputs into an array.
            var fields = $('#customSearchTable :input').serializeArray();
            jQuery.each(fields, function(i, field) {
                $("#results").append(field.name + " = " + field.value + ", ");
            });

            // now we'll reformat the data as we need

            // here we'll send the data via ajax

    });
});

أحتاج إلى إجراء بعض التغييرات على البيانات قبل التقديم ، ولم يتم كتابة هذا الرمز بعد ، لكن ما أجد يتم التقاط المملوءة باستخدام JavaScript بشكل صحيح ، ولكن يتم تجاهل أي تم إنشاؤه باستخدام Ajax.

أعلم أن هذا يتم حله عادةً باستخدام "Live" ، لكنني غير واضح بشأن كيفية حل هذا serializeArray(). باستخدام عناصر النماذج الإضافية AJAX تتم إضافة إلى #customSearchTable وهؤلاء هم الذين لم يتم التقاطهم.

أي مساعدة كبيرة موضع تقدير.

شكرًا

هل كانت مفيدة؟

المحلول

سوف أشرح التعليق أكثر قليلاً هنا:

عندما تتصل .serializeArray() إنه يحلق مثل أ <form> التقديم أو أقرب ما يمكن على أي حال ، للحصول على العناصر لتقديمها. الجزء الرئيسي هنا:

.filter(function() {
  return this.name && !this.disabled &&
         (this.checked || rselectTextarea.test(this.nodeName) ||
         rinput.test(this.type));
})

تماما كما <form> لا يشمل التقديم عناصر بدون أ name ينسب, ، ال .filter() اتصل باستخدام this.name سوف يقوم بتصفية تلك العناصر من تلك التي سيتم تسلسلها.

نصائح أخرى

لأي شخص آخر يجد هذا على أنه "مشكلة" ، يرجى ملاحظة أنه وفقًا لتعليق نيك كرافير أعلاه ، كل ما هو مطلوب هو التأكد من أن سمة "الاسم" تم إلحاقها بعناصر النماذج الجديدة التي يتم إنشاؤها ديناميكيًا. هذا حل مشكلتي! شكرا جزيلا لك حقا نيك!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top