2009-12-23 12 views
5

मैं एक jQuery मोडल संवाद के माध्यम से कुछ डेटा प्रविष्टि करने की कोशिश कर रहा हूं। मैं पोस्टिंग के लिए अपना डेटा इकट्ठा करने के लिए निम्नलिखित की तरह कुछ उपयोग करने की उम्मीद कर रहा था।फॉर्म फ़ील्ड के jQuery संवाद पोस्टिंग

data = $('#myDialog').serialize(); 

हालांकि इसका परिणाम कुछ भी नहीं है। अगर मैं सिर्फ मेरे डायलॉगॉग के साथ युक्त फॉर्म का संदर्भ देता हूं तो मुझे अपने संवाद के भीतर पेज पर सभी फ़ील्ड मिलते हैं।

AJAX सबमिशन के लिए संवाद के भीतर फ़ॉर्म फ़ील्ड एकत्र करने का सबसे अच्छा तरीका क्या है?

उत्तर

6

ऐसा होने का कारण यह है कि dialog वास्तव में आपके तत्वों को हटा रहा है और उन्हें दस्तावेज़ निकाय में रूट स्तर पर जोड़ रहा है। ऐसा इसलिए किया जाता है ताकि संवाद स्क्रिप्ट अपने पोजिशनिंग में भरोसा रख सके (यह सुनिश्चित करने के लिए कि संवाद वाले डेटा को अपेक्षाकृत स्थानित तत्व में शामिल नहीं किया गया है)। इसका मतलब है कि आपके फ़ील्ड वास्तव में में आपके फॉर्म में निहित नहीं हैं।

तुम अब भी आईडी से अलग-अलग क्षेत्रों तक पहुँचने के माध्यम से अपने मूल्यों को प्राप्त कर सकते हैं (या ऐसा कुछ भी), लेकिन आप एक आसान serialize समारोह का उपयोग करना चाहते हैं, तो आप संवाद के भीतर एक रूप की आवश्यकता के लिए जा रहे ।

+0

तरह काम करता है लेकिन आप asp.net masterpages उपयोग कर रहे हैं, यह पृष्ठ के अंदर एक और रूप डाल करने के लिए मुश्किल है। आपके पास एएसपीएक्स पेज पर केवल एक ही फॉर्म हो सकता है :( – NickG

2

मैंने अभी भी एक ही समस्या में भाग लिया है और चूंकि मेरे पास व्यक्तिगत रूप से संदर्भित करने के लिए मेरे संवाद में बहुत से फ़ील्ड हैं, मैंने जो किया वह संवाद को अस्थायी रूप में लपेटता था, इसे क्रमबद्ध करता था और परिणाम को मूल में जोड़ता था ajax कॉल करने से पहले फार्म के धारावाहिक डेटा: संवाद अंदर

function getDialogData(dialogId) { 
    var tempForm = document.createElement("form"); 
    tempForm.id = "tempForm"; 
    tempForm.innerHTML = $(dialogId).html(); 
    document.appendChild(tempForm); 
    var dialogData = $("#tempForm").serialize(); 
    document.removeChild(tempForm); 
    return dialogData; 
} 

function submitForm() { 
    var data = $("#MyForm").serialize(); 
    var dialogData = getDialogData("#MyDialog"); 
    data += "&" + dialogData; 
    $.ajax({ 
     url: "MyPage.aspx", 
     type: "POST", 
     data: data, 
     dataType: "html", 
     success: function(html) { 
      MyCallback(html); 
     } 
    }); 
} 
2

फार्म तत्व रूप से हटा दिया है और शरीर के अंत करने के लिए ले जाया जाता है। आपको ऐसा कुछ चाहिए।

$("#dialog_id").dialog().parent().appendTo($("#form_id")); 
+0

क्या इस काम को मोडल संवाद के लिए बनाने का कोई तरीका है? – NickG

0
jQuery("#test").dialog({ 
      autoResize:true, 
      width:500, 
      height:600, 
      modal: true, 
      bgiframe: true, 
      }).parent().appendTo("form"); 

यह आकर्षण

संबंधित मुद्दे