JQuery का उपयोग करके "अक्षम" विशेषता कैसे निकालें?


394

मुझे पहली बार इनपुट को निष्क्रिय करना होगा और फिर उन्हें सक्षम करने के लिए एक लिंक पर क्लिक करना होगा।

यह वही है जो मैंने अब तक कोशिश की है, लेकिन यह काम नहीं करता है।

HTML:

<input type="text" disabled="disabled" class="inputDisabled" value="">

jQuery:

$("#edit").click(function(event){
   event.preventDefault();
   $('.inputDisabled').removeAttr("disabled")
});


यह मुझे दिखाता है trueऔर फिर falseइनपुट के लिए कुछ भी नहीं बदलता है:

$("#edit").click(function(event){
   alert('');
   event.preventDefault();
   alert($('.inputDisabled').attr('disabled'));
   $('.inputDisabled').removeAttr("disabled");
   alert($('.inputDisabled').attr('disabled'));
});

2
मुझे आपकी समस्या नहीं दिख रही है। आप क्या पूछ रहे हो?
निकोसेंटेंगलो

तो सवाल क्या है? मेरा मतलब है कि आप किस समस्या का सामना कर रहे हैं
सत्या तेजा

7
प्रोप () - .प्रॉप ('अक्षम', गलत) का उपयोग करें
जे। ब्लैंचर्ड

यदि आपकी समस्या हल हो गई है, तो कृपया अन्य जानने के लिए स्वीकृत (वास्तविक) उत्तर पर टिक करें ...
धामु

समस्या यह है कि यह क्लिक के बाद अक्षम नहीं है
fatiDev

जवाबों:


817

हमेशा का उपयोग prop()सक्षम करने के लिए या विधि अक्षम तत्वों जब jQuery का उपयोग कर (क्यों के लिए नीचे देखें)।

आपके मामले में, यह होगा:

$("#edit").click(function(event){
   event.preventDefault();
   $('.inputDisabled').prop("disabled", false); // Element(s) are now enabled.
});

jsFiddle उदाहरण यहां।


prop()जब आप ऐसा करने के लिए उपयोग attr()/ उपयोग कर सकते हैं तो क्यों removeAttr()?

असल में, prop()जब हो रही या सेटिंग इस्तेमाल किया जाना चाहिए गुण (जैसे autoplay, checked, disabledऔर requiredदूसरों के बीच)।

का उपयोग करके removeAttr(), आप पूरी तरह से disabledविशेषता को पूरी तरह से हटा रहे हैं - जबकि prop()केवल संपत्ति के अंतर्निहित बूलियन मूल्य को गलत पर सेट कर रहा है।

जबकि आप जो करना चाहते हैं / कर सकते हैं , इसका मतलब यह नहीं है कि यह किया जाना चाहिए (और इस मामले में अजीब / समस्याग्रस्त व्यवहार का कारण बन सकता है)।attr()removeAttr()

निम्नलिखित अर्क ( प्रोप के लिए jQuery प्रलेखन से लिया गया ) () इन बिंदुओं को अधिक विस्तार से समझाते हैं:

"विशिष्ट स्थितियों में विशेषताओं और गुणों के बीच अंतर महत्वपूर्ण हो सकता है। jQuery 1.6 से पहले, .attr()कुछ विशेषताओं को प्राप्त करते समय विधि कभी-कभी संपत्ति मूल्यों को ध्यान में रखती है , जिससे असंगत व्यवहार हो सकता है। jQuery 1.6 के अनुसार, .prop() विधि स्पष्ट रूप से पुनर्प्राप्त करने का एक तरीका प्रदान करती है। गुण मान, जबकि .attr()विशेषताएँ पुनर्प्राप्त करता है। "

"गुण आम तौर पर क्रमबद्ध HTML विशेषता को बदले बिना एक DOM तत्व की गतिशील स्थिति को प्रभावित करते हैं। उदाहरणों में value इनपुट तत्वों की disabledसंपत्ति, इनपुट्स और बटन की checkedसंपत्ति , या एक चेकबॉक्स की संपत्ति शामिल है। .prop()विधि का उपयोग सेट करने के लिए disabledऔर checkedइसके बजाय किया जाना चाहिए । .attr() विधि। .val()विधि हो रही है और स्थापित करने के लिए इस्तेमाल किया जाना चाहिए value। "


3
लोगों को भी गंदा checkedness झंडा है, जो पूरी तरह से टूट जाता है abut पता होना चाहिए attrबनाम prop: चेक बॉक्स के लिए w3.org/TR/html5/forms.html#concept-input-checked-dirty आंतरिक jQuery के अलावा जादू वैकल्पिक हल।
सिरो सांटिल्ली 29 iro i i 法轮功 '

19
हम्म, .prop ("अक्षम", गलत) मेरे लिए एक बटन में काम नहीं करता है - टैग में 'अक्षम' विशेषता को बिना किसी मूल्य के छोड़ देता है।
UpTheCreek

3
@UpTheCreek मेरे लिए भी काम नहीं कर रहा था। लेकिन मुझे 'इस' क्लॉज़ (हमेशा की तरह) के साथ एक स्कोप समस्या होने का पता चला। द्वारा निर्दिष्ट .prop()तत्व पर विशिष्ट मामले में निष्पादित किया गया था this( this.prop("disabled", false)लेकिन, कॉलबैक में होने के कारण यह गलत तत्व के लिए बाध्यकारी था, इसलिए मुझे सामान्य var that = thisवर्कअराउंड करना पड़ा । साथ खेलने की कोशिश करना .apply()/ .call()अच्छा काम नहीं कर रहा था; क्यों, console.log(this)अगर यह कॉल करने से पहले आपकी इच्छित वस्तु पर सेट है, तो डबल चेक करेंthis.prop(...)
कामाफेदर

3
मैं इस उत्तर को दस्तावेज़ अनुभाग में रूपांतरण के लिए एक उम्मीदवार के रूप में नामांकित करता हूं। स्पष्ट, पूर्ण, अच्छी तरह से लिखा हुआ।
ऐनी गुन्न

4
RemoveAttr () का उपयोग करके, आप पूरी तरह से अक्षम विशेषता को स्वयं हटा रहे हैं - जबकि प्रोप () केवल संपत्ति के अंतर्निहित बूलियन मान को गलत पर सेट कर रहा है। मैं इसे सच नहीं मानता। HTML में, disabledसंपत्ति की मात्र उपस्थिति तत्व को निष्क्रिय कर देगी। उदाहरण के लिए, <button disabled="false"></button> बटन को सक्षम नहीं करने पर, संपत्ति को हटा दिया जाना चाहिए। कॉल करने से $('button').prop('disabled', false);jQuery आपके लिए संपत्ति को हटा देगा, जैसा कि मैंने इस कोडपेन (संपत्ति को हटाने को देखने के लिए निरीक्षण) में देखा था।
नातफली

42
<input type="text" disabled="disabled" class="inputDisabled" value="">
​<button id="edit">Edit</button>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

$("#edit").click(function(event){
    event.preventDefault();
    $('.inputDisabled').removeAttr("disabled")
});​

http://jsfiddle.net/ZwHfY/


42

अक्षम विशेषता उपयोग को हटाने के लिए,

 $("#elementID").removeAttr('disabled');

और अक्षम विशेषता उपयोग जोड़ने के लिए,

$("#elementID").prop("disabled", true);

का आनंद लें :)


4
या सिर्फ एलिमेंट ।removeAttribute ('विकलांग') वेनिला js में
ड्रैगोस रूसु

16

इस तरह का उपयोग करें,

HTML:

<input type="text" disabled="disabled" class="inputDisabled" value="">

<div id="edit">edit</div>

जे एस:

 $('#edit').click(function(){ // click to
            $('.inputDisabled').attr('disabled',false); // removing disabled in this class
 });

6
यह वास्तव में मेरे लिए काम कर रहा है। प्रोप ('अक्षम', गलत) आश्चर्यजनक रूप से काम नहीं किया।
स्टीफन

@ सफ़्फ़ान वही बात यहाँ! क्या आपको पता चला क्यों?
अलेक्जेंडर सुरफेल

1
मुझे पता है कि यह एक प्राचीन सूत्र है लेकिन अगर कोई अभी भी इससे जूझता है, तो मेरा मुद्दा यह था कि तत्व एक था <a>, जिस पर .prop('disabled', false)काम नहीं करता। मैंने इसे बदल दिया <button>और अब यह काम करता है
ओलिवर नेगी

9

मुझे लगता है कि आप विकलांग स्थिति को टॉगल करने की कोशिश कर रहे हैं , डायन के मामले में आपको इसका इस्तेमाल करना चाहिए ( इस सवाल से ):

$(".inputDisabled").prop('disabled', function (_, val) { return ! val; });

यहाँ एक काम कर रहे बेला है।


3

यह सोचा कि आप आसानी से सेटअप कर सकते हैं

$(function(){
$("input[name^=radio_share]").click
(
    function()
    {
        if($(this).attr("id")=="radio_share_dependent")
        {
            $(".share_dependent_block input, .share_dependent_block select").prop("disabled",false);   
        }
        else
        {
            $(".share_dependent_block input, .share_dependent_block select").prop("disabled",true);   
        }
    }
 );
});

3

यह एकमात्र कोड था जो मेरे लिए काम करता था:

element.removeProp('disabled')

ध्यान दें कि यह removePropऔर नहीं है removeAttr

मैं jQuery 2.1.3यहाँ उपयोग कर रहा हूँ ।


12
JQuery के दस्तावेज़ीकरण से: महत्वपूर्ण: .removeProp () विधि का उपयोग इन गुणों को झूठे में सेट करने के लिए नहीं किया जाना चाहिए। एक बार एक मूल संपत्ति निकाल दिए जाने के बाद, इसे फिर से नहीं जोड़ा जा सकता है। अधिक जानकारी के लिए .removeProp () देखें।
XanatosLightfiren

2

2018, JQuery के बिना

मुझे पता है कि सवाल JQuery के बारे में है: यह जवाब सिर्फ FYI है।

document.getElementById('edit').addEventListener(event => {
    event.preventDefault();
    [...document.querySelectorAll('.inputDisabled')].map(e => e.disabled = false);
}); 

0

इस प्रश्न में विशेष रूप से jQuery का उल्लेख है, लेकिन यदि आप इसे jQuery के बिना पूरा करना चाहते हैं, तो वेनिला जावास्क्रिप्ट में बराबर है:

elem.removeAttribute('disabled');

elem.removeAttr('disabled');मेरे लिए काम करता है
चेंग हुई युआन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.