2011-11-29 22 views
56

मेरे पास एक लंबा फॉर्म है जिसे मैंने 6 चरणों में तोड़ दिया है। जब फॉर्म लोड हो जाता है, तो सभी चरणों को लोड किया जाता है, लेकिन केवल पहला चरण दिखाई देता है। बाकी के पास display:none का सीएसएस है इसलिए वे छिपे हुए हैं। चूंकि एक चरण पूर्ण हो गया है और जावास्क्रिप्ट के साथ मान्य है, वर्तमान चरण display:none पर सेट है और नया चरण display:block पर सेट है। अंतिम चरण पर, उपयोगकर्ता फॉर्म सबमिट करता है। हालांकि, जैसा कि अपेक्षित है, पृष्ठ पर केवल display:block तत्व फ़ील्ड सबमिट किए गए हैं। display:none वाले तत्वों में सभी पूर्ण फ़ील्ड अनदेखा कर दिए गए हैं।डिस्प्ले के अंदर फॉर्म फ़ील्ड जमा करें: कोई भी तत्व

क्या display:none तत्वों के अंदर फ़ील्ड सबमिट करने का कोई तरीका है?

यदि नहीं, तो क्या एक ही प्रभाव प्राप्त करने का कोई और तरीका है?

+0

आप jquery फॉर्म विज़ार्ड प्लगइन को देखना चाहेंगे: http://thecodemine.org/ यह आपको कुछ विचार दे सकता है या जो भी आप ढूंढ रहे हैं उसे पूरा कर सकते हैं। –

+8

आपने इस व्यवहार को किस ब्राउजर में देखा था? ब्राउज़र मेरे सभी परीक्षणों में 'डिस्प्ले के भीतर फॉर्म तत्व सबमिट नहीं करते हैं: कोई भी कंटेनर नहीं। – tremby

उत्तर

120

उन्हें visibility:hidden और position:absolute पर सेट करें। फ़ील्ड को display:none के साथ सर्वर पर नहीं भेजा जाएगा, लेकिन visibility:hidden के साथ होगा। "स्थिति" को "पूर्ण" करने के लिए भी आपको एक ही दृश्य प्रभाव प्राप्त करना चाहिए।

अद्यतन यह किसी भी मौजूदा ब्राउज़र (2015 के नवंबर तक) में अब कोई समस्या नहीं प्रतीत होता है। फ़ील्ड्स सबमिट किए जाते हैं भले ही डिस्प्ले 'none' पर सेट हो। फ़ील्ड जो 'अक्षम' हैं, हालांकि, सबमिट नहीं जारी रहेगी।

+0

क्या मैं jquery slideUp() और slideDown() के साथ ऐसा कर सकता हूं? –

+0

मैं jQuery से बहुत परिचित नहीं हूँ। प्रदर्शन कैसे है: अभी कोई भी सेट नहीं किया जा रहा है? यदि आप इसे कर रहे हैं तो आपको उस कोड को कोड के साथ प्रतिस्थापित करने में सक्षम होना चाहिए जो स्थिति और दृश्यता सेट करता है। यदि यह एक ढांचे में छिपा हुआ है तो आपको यह देखना होगा कि व्यवहार को ओवरराइड करने या आसपास के किसी अन्य काम को खोजने का कोई तरीका है या नहीं। – adam0101

+0

नहीं, आप स्लाइडडाउन के साथ ऐसा नहीं कर सकते हैं, क्योंकि एनीमेशन एचटीएमएल आइटम के 'डिस्प्ले' के अंत में 'none' – siniradam

0

बस ऊपर दिए गए उत्तर में कुछ जोड़ने के लिए। आप slideDown() उपयोग करना चाहते हैं - बस से पहले ही इस प्रकार का तत्व के सीएसएस सेट:

$('element') 
    .css({ 
     display: 'none' 
     position: 'relative', 
     visibility: 'visible' 
    }) 
    .slideDown(); 

और slideDown() ठीक काम करेंगे। आप slideUp() के लिए एक ही तर्क का उपयोग कर सकते हैं।

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