2011-09-23 9 views
32

पर संपादन योग्य विशेषता को बदलता है मैं radiobuttons से संबंधित टेक्स्टबॉक्स चाहता हूं। इसलिए प्रत्येक रेडियो बटन को इसके टेक्स्टबॉक्स को सक्षम करना चाहिए और दूसरों को अक्षम करना चाहिए। हालांकि जब मैंने टेक्स्टबॉक्स की अक्षम विशेषता को सत्य पर सेट किया है, तो यह संपादन योग्य विशेषता को भी बदल देता है। मैंने संपादन योग्य विशेषता को फिर से सही करने की कोशिश की लेकिन यह काम नहीं किया।.setAttribute ("अक्षम", झूठा); झूठी

जे एस समारोह:

function enable(id) 
{ 
    var eleman = document.getElementById(id); 
    eleman.setAttribute("disabled", false); 
    eleman.setAttribute("editable", true); 
} 

XUL तत्वों: एक तत्व को सक्षम करने के

function enable(id) 
{ 
    var eleman = document.getElementById(id); 
    eleman.removeAttribute("disabled");   
} 

:

<radio id="pno" label="123" onclick="enable('ad')" /> 
<textbox id="ad" editable="true" disabled="true" flex="1" emptytext="asd" onkeypress="asd(event)" tooltiptext="" > 

उत्तर

70

एक disabled तत्व, (स्वयं समझा) विकलांग और इस तरह तार्किक संपादन योग्य नहीं है। इसलिए:

सेट विकलांग विशेषता [...] संपादन योग्य विशेषता भी

एक अच्छी तरह से परिभाषित व्यवहार करना है बदल जाता है।

वास्तविक समस्या यह है कि आप disabledfalsesetAttribute() के माध्यम से सेट करने की कोशिश कर रहे हैं, जो आप उम्मीद कर रहे हैं जो नहीं करता है। disabled -attribute सेट किया गया है, इसके मान से स्वतंत्र (इसलिए, disabled="true", disabled="disabled" और disabled="false" सभी समान हैं: तत्व अक्षम हो जाता है)।आप के बजाय पूरा विशेषता को दूर करना चाहिए:

element.removeAttribute("disabled"); 

या कि संपत्ति सीधे सेट: अपनी आईडी के साथ

element.disabled = false; 
+1

अच्छा जवाब, लेकिन बाद के मामले में आप कहते हैं कि "उस विशेषता को सीधे सेट करें" और मेरा मानना ​​है कि यह "उस संपत्ति को सीधे सेट करें" होना चाहिए, क्योंकि आप HTML विशेषता के बजाय DOM प्रॉपर्टी संपादित कर रहे हैं। सूक्ष्म अंतर लेकिन मुझे लगता है कि यहां महत्वपूर्ण है। – The111

+1

@ The111: teh संकेत के लिए धन्यवाद, मैंने इसे बदल दिया। – oezi

+0

क्या कोई तरीका है कि मैं एक ही चीज़ करने के लिए 'setAttribute() 'का उपयोग कर सकता हूं? 'setAttribute ("अक्षम", "सत्य");' काम नहीं करता है; –

6

बजाय यह करके देखें

यह है कि मैं क्या करने की कोशिश की थी आपको हटाना होगा अक्षम विशेषता। इसे झूठी पर सेट करने का मतलब है कि यह अक्षम है।

http://jsfiddle.net/SRK2c/

3

विकलांग गुण मूल्य actally नहीं माना जाता है .. आम तौर पर अगर आप विशेषता देखा है विकलांग के रूप में सेट किया गया है = "अक्षम" "अक्षम" यहाँ नहीं आवश्यक persay सबसे अच्छी बात करने के लिए है .. इस प्रकार विशेषता को हटाने के लिए है।

element.removeAttribute("disabled");  

भी आप

element.disabled=false; 
9

कर सकता है बस संपत्ति सीधे सेट:।

eleman.disabled = false; 
+0

वहाँ किसी भी तरह से मैं setAttribute() का उपयोग कर सकते सटीक एक ही बात करने के लिए है? setAttribute ("अक्षम", "सच"); काम नहीं करता –

+1

@ अजयद्रव्य- स्वीकृत उत्तर देखें। * अक्षम * विशेषता बुलियन है, इसकी उपस्थिति इसके मूल्य को सही मानती है। इसे ठीक करने का एकमात्र तरीका या तो संपत्ति को गलत पर सेट करना है या * removeAttribute * का उपयोग करके विशेषता को हटा देना है। – RobG

0

बस की जगह 'myselect'

disable- करने के लिए>

document.getElementById("mySelect").disabled = true; 

सक्षम करने के लिए->

document.getElementById("mySelect").disabled = false; 
0

का उपयोग करते हुए विधि सेट और हटाने विशेषता

function radioButton(o) { 
 

 
    var text = document.querySelector("textarea"); 
 

 
    if (o.value == "on") { 
 
    text.removeAttribute("disabled", ""); 
 
    text.setAttribute("enabled", ""); 
 
    } else { 
 
    text.removeAttribute("enabled", ""); 
 
    text.setAttribute("disabled", ""); 
 
    } 
 
    
 
}
<input type="radio" name="radioButton" value="on" onclick = "radioButton(this)" />Enable 
 
<input type="radio" name="radioButton" value="off" onclick = "radioButton(this)" />Disabled<hr/> 
 

 
<textarea disabled ></textarea>

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