2011-10-24 13 views
10

मुझे किसी तालिका से कुछ पूर्ववर्ती डेटा दिखाने की आवश्यकता है और उपयोगकर्ताओं को उन्हें संपादित करने से रोकने के लिए उन्हें अक्षम करने की आवश्यकता है। तो मैं उन्हेंअक्षम फॉर्म तत्व सबमिट नहीं किया गया है

$form -> getElement("elementname") -> setAttrib("disable", true);

जब मैं प्रपत्र सबमिट अक्षम, मुझे पता चला है कि प्रपत्र तत्व सब पर प्रस्तुत नहीं प्राप्त करता है, सिर्फ इसलिए कि यह अक्षम किया गया था। जब मैंने अक्षम विकल्पों को हटाने का परीक्षण किया तो मैंने इसकी पुष्टि की।

क्या हो रहा है? क्या मुझसे कुछ गलत हो रही है? इसे कैसे हल करें?

+0

वैसे भी यह सुनिश्चित करने का सही तरीका नहीं है कि उपयोगकर्ता फ़ील्ड को संपादित नहीं करेगा। इस लक्ष्य को प्राप्त करने के लिए आपको एक वैधकर्ता जोड़ना चाहिए। –

+2

लक्ष्य केवल पहले से मौजूद डेटा दिखाने के लिए है, तो बस यही काम: इसे प्रिंट, बिल्कुल प्रपत्र फ़ील्ड्स का उपयोग नहीं करते। –

उत्तर

21

यह डिज़ाइन द्वारा है, अक्षम तत्व फ़ॉर्म के साथ सबमिट नहीं किए जाते हैं।

क्या आप कर रहे हैं वास्तव में एक अशक्त अभ्यास, कोई बात नहीं क्या आप पुट में उस रूप के लिए क्या यह अंत उपयोगकर्ता द्वारा संपादित किया जा जाएगा। आप बस फॉर्म इनपुट पर भरोसा नहीं कर सकते - यहां तक ​​कि छिपे हुए फ़ील्ड - के साथ छेड़छाड़ नहीं किया जा सकता है।

आपकी सबसे अच्छी शर्त केवल उपयोगकर्ता को जानकारी प्रदर्शित करना है और फ़ॉर्म सबमिट करने के बाद इसे फिर से लोड करना है; सबसे खराब स्टोर में इसे एक सत्र में स्टोर करें।

1

मैं छुपे तत्वों का उपयोग करके इन प्रकार के परिदृश्यों को संभालता हूं। अपने अक्षम तत्व में मौजूद सामग्री के साथ एक छुपा तत्व जोड़ें। जब फॉर्म पोस्ट किया जाता है, तो छुपा तत्व से मान का उपयोग करें।

लेकिन सावधान रहें कि उपयोग फॉर्म सबमिट करने से पहले फ़ायरबग या अन्य टूल्स का उपयोग करके छुपा तत्व के मूल्य को संशोधित कर सकता है। प्रसंस्करण से पहले फॉर्म मानों को फिर से जांचें।

+3

'हमेशा processing' से पहले फिर से फार्म मूल्यों की जाँच आप की जाँच करने के मूल्य क्या आप के बाद फ़ॉर्म सबमिट किया जाता यह होना चाहते है करने जा रहे हैं, तो फिर वहाँ पहली जगह में इसे प्रस्तुत करने का कोई मतलब नहीं है। – Dunhamzzz

17

यह मेरे लिए एक आकर्षण की तरह काम किया। यह तत्व को संपादित होने से रोकता है और इसे पोस्ट के माध्यम से पास कर देगा।

$this->username->setAttrib('readonly', 'true'); 
+3

नोट: यह चयन इनपुट प्रकार –

+0

लिए काम नहीं करता जावास्क्रिप्ट अभी भी केवल पढ़ने के तत्व का उपयोग कर सकते हैं और अपने मूल्य बदल जाते हैं। –

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