प्रदर्शन के अंदर फ़ॉर्म फ़ील्ड सबमिट करें: कोई भी तत्व नहीं


84

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

क्या display:noneतत्वों के अंदर खेतों को जमा करने का कोई तरीका है ?

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


12
आपने इस व्यवहार को किस ब्राउज़र में देखा? ब्राउज़रों को display: noneमेरे सभी परीक्षणों में कंटेनरों के भीतर फार्म तत्व जमा करने लगते हैं ।
कांपना

जवाबों:


177

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

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


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

3
IE8 (आश्चर्य!) अभी भी उन फ़ील्ड्स को पोस्ट करने के साथ समस्याएँ हैं जो सेट हैं display:none;। यदि फ़ील्ड के शीर्ष पर एक और HTML तत्व रखा गया है तो वही समस्या होती है।
एरिक टोइरा सिलफेवरवार्ड

2
@ स्पेसर, हाँ disabledमानों को जमा होने से रोकता है, लेकिन कुछ पुराने ब्राउज़रों पर display:noneभी इसका प्रभाव पड़ेगा। ध्यान रखें कि यह उत्तर 4 साल पहले पोस्ट किया गया था और केवल उन डेवलपर्स के लिए लागू होता है जिन्हें उन पुराने ब्राउज़रों के लिए विकसित करने की आवश्यकता होती है।
adam0101

2
यह 20 जनवरी है और क्रोमियम और फ़ायरफ़ॉक्स के नवीनतम संस्करणों का उपयोग कर रहा है, लेकिन अभी भी उन क्षेत्रों को पोस्ट नहीं कर सकता है जो पहले लोड पर छिपे हुए थे
Masinde Muliro

3
यहां क्रोम 49, पुष्टि कर सकता है कि प्रदर्शन के भीतर इनपुट तत्वों को जमा करना: कोई भी काम नहीं करता है।
सीएसवन

4

HTML4, धारा 17.13.2, स्पष्ट रूप से कहता है कि प्रदर्शन का उपयोग करते हुए भी छिपे हुए नियंत्रण: प्रस्तुत करने के लिए कोई भी मान्य नहीं हो सकता है।

https://www.w3.org/TR/html401/interact/forms.html

इसलिए यदि ब्राउज़र प्रदर्शन को अनदेखा करता है: कोई नहीं तो यह पूरी तरह से HTML- सक्षम नहीं है। मैं एक वास्तविक ब्राउज़र के लिए स्विच करने की सलाह देता हूं।


1
एक प्रोग्रामर आगंतुकों को यह नहीं बता सकता है कि कौन सा ब्राउज़र बहुत अधिक उपयोग करता है और मैं नवीनतम फ़ायरफ़ॉक्स के साथ भी यही समस्या रखता हूं। प्रदर्शन की कोशिश: कोई नहीं या दृश्यता: छिपा हुआ लेकिन न तो काम।
9

इतने सारे साइटों पर "आपके ब्राउज़र को अपग्रेड करने का समय" कौन बैनरों को दे रहा है? ;-) मैं समझ गया। आपका मतलब यह नहीं था कि "प्रोग्रामर आगंतुकों को यह नहीं बता सकता है कि किस ब्राउज़र का उपयोग करना है" - जो अभिव्यक्ति की स्वतंत्रता का उल्लंघन करेगा ... आप शायद "किराए पर लिया प्रोग्रामर" का मतलब है। ठीक है। मेरी पोस्ट बहुत उपयोगी नहीं थी क्योंकि मैं सिर्फ यह बताना चाहता था कि मानकों द्वारा निर्धारित सही व्यवहार क्या है। बस।
एलिक्सन

1
किसी भी घटना में, दृश्यता के बारे में मेरी टिप्पणी: छिपी (और शायद यहां तक ​​कि प्रदर्शन: कोई नहीं) बकवास थी क्योंकि मुझे एहसास हुआ कि मेरे मामले में यह एक बग है, या बल्कि एक निरीक्षण है, जो HTML मानक में लिखा गया है। यदि कोई चेकबॉक्स अनियंत्रित है और फ़ॉर्म सबमिट किया गया है, तो यह ऐसा है जैसे यह वहां भी नहीं है। यह न केवल कुछ भी प्रस्तुत नहीं करता है (डबल-नेगेटिव माफ करें) लेकिन यह बिल्कुल भी जमा नहीं करता है।
डॉन

तो ऐसा लगता है कि यह कुछ quirky गैर-HTML अनुरूप ब्राउज़र नहीं था। मामला समाप्त।
एलिक्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.