2009-09-06 15 views
6

सबमिट नहीं करना संपादित करें: मैंने केवल स्क्रैच से समस्या को ठीक किया है। Y'alls समय बर्बाद करने के लिए खेद है। यदि आप इतने इच्छुक हैं तो कृपया बंद करने के लिए वोट दें।जावास्क्रिप्ट का उपयोग करके गतिशील रूप से फॉर्म तत्व जोड़ें -

मुझे जावास्क्रिप्ट के माध्यम से इनपुट फ़ील्ड जोड़े जाने पर सबमिट करने के लिए किसी प्रपत्र में वास्तविक डेटा प्राप्त करने में समस्या हो रही है। फ़ील्ड दिखाई देते हैं, और सही जगह पर, लेकिन जब मैं सर्वर की ओर var_dump (fieldname) करता हूं, तो कुछ भी दिखाई नहीं दे रहा है। लाइव HTTP हेडर के साथ निरीक्षण करने से मुझे पता चलता है कि ब्राउज़र गतिशील रूप से जोड़े गए फॉर्म फ़ील्ड सबमिट करने का प्रयास नहीं कर रहा है।

क्या मुझे किसी भी तरह से मेरे गतिशील रूप से बनाए गए फॉर्म इनपुट को "संलग्न" करने की आवश्यकता है?

मेरे कोड:

एचटीएमएल

<form id="att_form" method="post" name="add_attachments" enctype="multipart/form-data" action="#"> 
<-- below input to prove form submits, just not the dyn added elements --> 
<input name="data[one]" type="text" /> 
<div id="add_fields"></div> 
<input type="submit" /> 
</form> 

जावास्क्रिप्ट

function addFormField() 
{ 
var id = 1; 
var htm = "<p id='row" + id + "'><input type='text' size='20' name='txt[]' id='txt" + id + "' /></p>"; 
$("#add_fields".append(htm); 
} 

जब मैं फ़ॉर्म सबमिट करेंगे, मेरा इनपुट नामित डेटा [एक] एक POSTd मूल्य के रूप में दिखाई देता है , लेकिन addFormField() के साथ जोड़े गए लोग नहीं करते हैं। वे एचटीएमएल में, सही जगह पर दिखाते हैं, लेकिन पोस्ट नहीं करते हैं। क्या मुझे इसे सबमिट करने के लिए तत्व को मेरे फॉर्म तत्व में एक बच्चे के रूप में जोड़ने की आवश्यकता है?

मैंने Submit form input fields added with javascript देखा है, जहां मुझे विशेष रूप से फॉर्म बच्चे को डेटा जोड़ने का विचार मिला है, लेकिन इसके लिए मेरे सीएसएस के कुछ पुनर्गठन की आवश्यकता होगी। तो, मुझे उम्मीद है कि यह उपरोक्त कोड में कुछ आसान है जो मैं कर सकता हूं।

अग्रिम धन्यवाद!

संपादित करें: टाइपो को ठीक किया गया है, लेकिन अभी भी काम नहीं कर रहा है। मैंने उपरोक्त एसओ लिंक में चर्चा की गई पुस्तकालय मुक्त जेएस विधि का उपयोग करने का निर्णय लिया है, क्योंकि यह ठीक काम करता है। फ़िर भी सहायता के लिए धन्यवाद! एचटीएमएल

और add_fields/add_files के बजाय htm है कि अपने वास्तविक कोड

+0

यदि आप एचटीएमएल को जोड़ते हैं तो यह अल पर काम करता है, उदाहरण के लिए, फॉर्म का नाम 'फ़ील्डसेट'-बच्चे? –

+0

यकीन नहीं है, लेकिन मैं इस उदाहरण पर अटकने की कोशिश नहीं कर रहा हूं। यह कुछ सुंदर बदसूरत एचटीएमएल में जा रहा है। सभी महान सुझावों को आजमाने के लिए आवंटित समय से बाहर निकलें, लेकिन आपकी मदद के लिए सभी को धन्यवाद! समापन मुद्दा –

उत्तर

1

अपने कोड में लिखने की त्रुटियों का एक बहुत थे। उदाहरण के लिए, आपने jquery के लिए चयनकर्ता टैग बंद नहीं किया है।

आप डाल $("#add_fields".append(htm);

$("#add_fields").append(htm);

सूचना लापता parantheses किया जाना चाहिए था।

लेकिन मुझे विश्वास है कि आपकी समस्या मुख्य रूप से PHP के माध्यम से मूल्यों तक पहुंचने का प्रयास कर रही है। मैंने बस अपना स्रोत एक परीक्षण पृष्ठ में रखा है और यदि आप मानों को सही तरीके से एक्सेस करते हैं तो यह सब काम करता है।

<?php 
foreach ($_REQUEST['txt'] as $printme) 
    echo $printme."<br/>"; 
?> 

उपरोक्त स्रोत ठीक काम करता है।

2
वहाँ

अपने कोड में 2 टंकण त्रुटि है?

यदि हां, तो आप इनपुट टैग और पी टैग को बंद नहीं किया .. तो शायद प्रपत्र उन्हें अनदेखा ..

var htm = "<p id='row" + id + "'><input type='text' size='20' name='txt[]' id='txt" + id + "' /></p>"; 
0

जब आप innerHtml को HTML फ़ील्ड के रूप में फॉर्म फ़ील्ड रखने के लिए जोड़ रहे/जोड़ रहे हैं या उपयोग कर रहे हैं, तो कभी-कभी यह फ़ॉर्म के बाहर रखेगा, आप इसे फॉर्म के हिस्से के रूप में देखेंगे लेकिन आंतरिक रूप से यह नहीं है।

इस समस्या को हल करने के लिए आपको form विशेषता form=myForm जैसे दायर इनपुट के साथ जोड़ने की आवश्यकता है, और MyForm आपकी फॉर्म आईडी होना चाहिए।

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