2012-11-29 27 views
277

मुझे पहले सक्षम करने के लिए एक लिंक के क्लिक पर इनपुट को अक्षम करना होगा।JQuery का उपयोग कर अक्षम विशेषता हटाएं?

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

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

मैं आपकी समस्या नहीं दिख रहा। आप क्या पूछ रहे हो? – NicoSantangelo

+0

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

+7

प्रोप() - .prop ('अक्षम', झूठी) –

उत्तर

572

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

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

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

jsFiddle example here.


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

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

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

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

निम्नलिखित अर्क (jQuery documentation for prop() से लिया गया) अधिक विस्तार में इन बातों की व्याख्या:

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

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

+1

दोनों को सक्षम और अक्षम करने के लिए लोगों को गंदा जांच के बारे में भी पता होना चाहिए फ्लैग, जो चेकबॉक्स के लिए 'attr' बनाम' prop' को पूरी तरह से तोड़ता है: http://www.w3.org/TR/html5/forms.html#concept-input-checked-dd आंतरिक jQuery वर्कअराउंड जादू को छोड़कर। –

+1

बस थोड़ा सा अतिरिक्त, अगर आप चेकबॉक्स को अक्षम करना चाहते हैं और साथ ही इसे अनचेक करना चाहते हैं। हमें पहले अनचेक करने की आवश्यकता है और फिर इस jQuery ('# no_tax_payer') को अक्षम करें। प्रोप ("चेक", झूठा) .prop ("अक्षम", सत्य); उम्मीद है कि यह किसी की मदद करता है! – Haijerome

+11

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

14

उपयोग इस तरह,

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 
}); 
+1

http://jsfiddle.net/gvrPD/workingworking आपके लिए – Dhamu

+5

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

+0

@Stefan यहाँ एक ही चीज़ है! आप पता लगाते हैं क्यों? –

29
<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/

6

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

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

Here is a working fiddle.

2

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

$(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); 
     } 
    } 
); 
}); 
20

विकलांग विशेषता उपयोग दूर करने के लिए,

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

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

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

का आनंद लें :)

+1

या सिर्फ वेरिला जेएस –

4

यह केवल कोड है कि मेरे लिए काम किया था:

element.removeProp('disabled') 

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

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

+6

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

0

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

elem.removeAttribute('disabled'); 
संबंधित मुद्दे