2010-05-20 30 views
75

यदि संभव हो, तो जावास्क्रिप्ट का उपयोग करके text प्रकार के इनपुट फ़ील्ड में लेखन अक्षम करना चाहता हूं। इनपुट फ़ील्ड डेटाबेस से पॉप्युलेट किया गया है; यही कारण है कि मैं नहीं चाहता कि उपयोगकर्ता अपना मूल्य संशोधित करे। जैसे आप चाहेंइनपुट प्रकार = टेक्स्ट को अक्षम कैसे करें?

उत्तर

108

यदि पृष्ठ को प्रस्तुत किया जाता है, तो आपको यह पता है, जो आपके जैसा लगता है क्योंकि डेटाबेस का मान है, जावास्क्रिप्ट के बजाए इसे प्रस्तुत करने के दौरान इसे अक्षम करना बेहतर होता है। ऐसा करने के लिए, बस readonly विशेषता (disabled या, यदि आप फ़ॉर्म सबमिशन से निकालने के लिए और साथ ही चाहते हैं) जोड़ने के लिए, <input> को इस तरह: डेटा डेटाबेस से से भर जाता है

<input type="text" disabled="disabled" /> 
//or... 
<input type="text" readonly="readonly" /> 
+14

+1 लिख रहे हैं कि हो जाएगा केवल पढ़ने के लिए! इसके बारे में सभी उल्लेख नहीं है। –

+63

मुझे नहीं पता कि यह वोट क्यों प्राप्त करता है, यह सवाल का जवाब नहीं देता है। हम जावास्क्रिप्ट उत्तर की उम्मीद कर रहे थे। – Sophie

+1

@ सोफी यह पूछताछ करने वालों के लिए अपनी स्थिति के आधार पर ऐसा करने का सबसे सही तरीका है, शायद एक शीर्षक परिवर्तन क्रम में है। –

6

अपने इनपुट बॉक्स के लिए एक संदर्भ जाओ (जैसे document.getElementById('mytextbox')) और सेट अपने readonly संपत्ति true रहे हैं:

:

myInputBox.readonly = true; 

वैकल्पिक रूप से आप बस इस संपत्ति इनलाइन (कोई JavaScript आवश्यक) जोड़ सकते हैं

<input type="text" value="from db" readonly="readonly" /> 
+0

यदि आप एचटीएमएल (के रूप में एक्सएचटीएमएल के खिलाफ) <= "पाठ" value = "डाटाबेस से" केवल पढ़ने के लिए इनपुट प्रकार> –

14

हैं, तो आप पर प्रदर्शित करने के लिए <input> टैग का उपयोग कर विचार कर सकते हैं। आप जावास्क्रिप्ट के साथ इसे बाद में निष्क्रिय करने के लिए की जरूरत है

<input type='text' value='${magic.database.value}' disabled> 

, आप "अक्षम" विशेषता सेट कर सकते हैं: फिर भी, आप सही टैग में अक्षम कर सकते हैं

document.getElementById('theInput').disabled = true; 

कारण मैं नहीं दिखाया जा रहा करने का सुझाव <input> के रूप में मान यह है कि, मेरे अनुभव में, यह लेआउट समस्याओं का कारण बनता है। यदि पाठ लंबा है, तो <input> में उपयोगकर्ता को पाठ को आजमाने और स्क्रॉल करने की आवश्यकता होगी, जो सामान्य लोगों को ऐसा करने का अनुमान नहीं लगाएगा। यदि आप इसे <span> या कुछ में छोड़ देते हैं, तो आपके पास अधिक स्टाइल लचीलापन है।

+2

दिमाग में भालू अक्षम कुछ ब्राउज़रों पर टेक्स्ट लगभग अपठनीय बना सकते हैं। आप केवल पढ़ने योग्य विशेषता के साथ बेहतर हो सकते हैं, उदा। <इनपुट प्रकार = "पाठ" मूल्य = "foo" readonly> –

+0

हाँ, यह एक अच्छा मुद्दा है! – Pointy

+0

आपकी रचनात्मक सहायता के लिए बहुत धन्यवाद; यह मेरा समय बचाता है। – kawtousse

162
document.getElementById('foo').disabled = true; 

संपादित

या

document.getElementById('foo').readOnly = true; 

ध्यान दें कि readOnly फ़ायरफ़ॉक्स (जादू) में सही ढंग से काम करने के लिए CamelCase में होना चाहिए।

+3

यह मेरे लिए काम किया। Jquery संस्करण $ ('इनपुट') है। प्रोप ('अक्षम', सत्य) –

+8

यह स्वीकार्य उत्तर होना चाहिए। – WebWanderer

+0

मैं इस पर सात साल देर से हूं - लेकिन क्या 2017 में इन दोनों के बीच कोई अर्थपूर्ण अंतर है? – Jules

4

आप jQuery द्वारा भी कर सकते हैं:

$('#foo').disabled = true; 
+1

शायद एक बेहतर विकल्प है [यह] (http://stackoverflow.com/a/1414366/1412022) – Nothing4You

+0

@ कुछ भी नहीं 4 आप सहमत हैं –

+0

@ चानी पॉज़ आप देशी जेएस सेटर को बुला रहे हैं jquery ऑब्जेक्ट पर यह त्रुटि के साथ परिणाम देगा। $ ('# foo') [0] .disabled = true या $ ('foo')। (0) .disabled = true काम करेगा –

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