जवाबों:
disabled
संपत्ति को बदलने के लिए आपको .prop()
फ़ंक्शन का उपयोग करना चाहिए ।
$("input").prop('disabled', true);
$("input").prop('disabled', false);
.prop()
समारोह में मौजूद नहीं है, लेकिन .attr()
इसी तरह की है:
अक्षम विशेषता सेट करें।
$("input").attr('disabled','disabled');
फिर से सक्षम करने के लिए, उचित विधि का उपयोग करना है .removeAttr()
$("input").removeAttr('disabled');
आप हमेशा वास्तविक DOM ऑब्जेक्ट पर भरोसा कर सकते हैं और संभवतः अन्य दो विकल्पों की तुलना में थोड़ा तेज़ है यदि आप केवल एक तत्व के साथ काम कर रहे हैं:
// assuming an event handler thus 'this'
this.disabled = true;
.prop()
या .attr()
विधियों का उपयोग करने का लाभ यह है कि आप चयनित वस्तुओं के एक समूह के लिए संपत्ति निर्धारित कर सकते हैं।
नोट: 1.6 में एक ऐसा .removeProp()
तरीका है जो बहुत अच्छा लगता है removeAttr()
, लेकिन यह प्रलेखन से कुछ अंश जैसे देशी गुणों पर इस्तेमाल नहीं किया जाना चाहिए'disabled'
:
नोट: इस पद्धति का उपयोग देशी गुणों जैसे कि जाँच, अक्षम, या चयनित को हटाने के लिए न करें। यह पूरी तरह से संपत्ति को हटा देगा और, एक बार हटाए जाने के बाद, फिर से तत्व में नहीं जोड़ा जा सकता है। इन गुणों को गलत पर सेट करने के लिए .prop () का उपयोग करें।
वास्तव में, मुझे संदेह है कि इस विधि के लिए कई वैध उपयोग हैं, बूलियन प्रॉप्स इस तरह से किए जाते हैं कि आपको उन्हें "हटाने" के बजाय झूठे पर सेट करना चाहिए जैसे कि उनके "विशेषता" समकक्षों में 1.5
':input'
, न कि सिर्फ 'input'
। बाद वाला केवल वास्तविक <इनपुट> तत्वों का चयन करता है।
input,textarea,select,button
की तुलना में उपयोग करने के लिए थोड़ा बेहतर है :input
- :input
एक चयनकर्ता के रूप में काफी अक्षम है क्योंकि इसे *
प्रत्येक तत्व पर लूप का चयन करना पड़ता है और tagname द्वारा फ़िल्टर करना होता है - यदि आप 4 tagname चयनकर्ताओं को सीधे पास करते हैं तो यह MUU तेज है। इसके अलावा, :input
एक मानक सीएसएस चयनकर्ता, नहीं है इसलिए किसी भी निष्पादन लाभ से संभव हो रहे हैं querySelectorAll
कर रहे हैं खो दिया है
.removeProp("disabled")
Chrome की तरह कुछ ब्राउज़रों के मामले में, @ThomasDavidBaker द्वारा बताया गया, "संपत्ति को पूरी तरह से हटाए जाने और फिर से नहीं जोड़े जाने" के मुद्दे का उपयोग करने के कारण, जबकि यह फ़ायरफ़ॉक्स जैसे कुछ पर ठीक काम कर रहा था। हमें यहां वास्तव में सावधान रहना चाहिए। .prop("disabled",false)
इसके बजाय हमेशा उपयोग करें
बस नए सम्मेलनों और & # के लिए यह अनुकूलनीय आगे जा रहा है (जब तक कि ECMA6 (???) के साथ चीजें बहुत बदल नहीं जाती हैं:
$(document).on('event_name', '#your_id', function() {
$(this).removeAttr('disabled');
});
तथा
$(document).off('event_name', '#your_id', function() {
$(this).attr('disabled','disabled');
});
$(document).on('event_name', '#your_id', function() {...})
इसके बजाय क्यों $('#your_id').on('event_name', function() {...})
? जैसा कि jQuery .on () दस्तावेज़ीकरण में वर्णित है, पूर्व प्रतिनिधिमंडल का उपयोग करता है और उन सभी event_name
घटनाओं को सुनता है document
जो मेल खाने के लिए बबल और चेक करते हैं #your_id
। उत्तरार्द्ध विशेष रूप से $('#your_id')
केवल घटनाओं को सुनता है और वह बेहतर होता है।
// Disable #x
$( "#x" ).prop( "disabled", true );
// Enable #x
$( "#x" ).prop( "disabled", false );
कभी-कभी आपको फार्म तत्व को इनपुट या टेक्स्टारिया जैसे अक्षम / सक्षम करने की आवश्यकता होती है। Jquery आपको आसानी से इसे "अक्षम" करने के लिए अक्षम विशेषता सेट करने में मदद करता है। उदाहरण के लिए:
//To disable
$('.someElement').attr('disabled', 'disabled');
अक्षम तत्व को सक्षम करने के लिए आपको इस तत्व से "अक्षम" विशेषता को हटाने या इसे स्ट्रिंग को खाली करने की आवश्यकता है। उदाहरण के लिए:
//To enable
$('.someElement').removeAttr('disabled');
// OR you can set attr to ""
$('.someElement').attr('disabled', '');
संदर्भ: http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-ith.html
$("input")[0].disabled = true;
या
$("input")[0].disabled = false;
आप इसे अपने कोड में कहीं वैश्विक रख सकते हैं:
$.prototype.enable = function () {
$.each(this, function (index, el) {
$(el).removeAttr('disabled');
});
}
$.prototype.disable = function () {
$.each(this, function (index, el) {
$(el).attr('disabled', 'disabled');
});
}
और फिर आप सामान लिख सकते हैं जैसे:
$(".myInputs").enable();
$("#otherInput").disable();
prop
और नहीं attr
के साथ disabled
संपत्ति इसे सही ढंग से काम करने के लिए (ऊपर jQuery 1.6 या कल्पना करते हुए)।
attr
? मैं कुछ परियोजनाओं में उपरोक्त कोड का उपयोग करता हूं और जहां तक मुझे याद है यह ठीक काम करता है
checked
चेकबॉक्स की संपत्ति है। प्रयोग attr
करने से समान परिणाम नहीं मिलेगा।
उनका उपयोग करने के कई तरीके हैं जिनसे आप किसी भी तत्व को सक्षम / अक्षम कर सकते हैं :
दृष्टिकोण १
$("#txtName").attr("disabled", true);
दृष्टिकोण २
$("#txtName").attr("disabled", "disabled");
यदि आप jQuery 1.7 या उच्चतर संस्करण का उपयोग कर रहे हैं, तो attr () के बजाय प्रोप () का उपयोग करें।
$("#txtName").prop("disabled", "disabled");
यदि आप किसी भी तत्व को सक्षम करना चाहते हैं, तो आपको बस इसके विपरीत करना होगा जो आपने इसे अक्षम करने के लिए किया था। हालाँकि jQuery किसी भी विशेषता को हटाने का एक और तरीका प्रदान करता है।
दृष्टिकोण १
$("#txtName").attr("disabled", false);
दृष्टिकोण २
$("#txtName").attr("disabled", "");
दृष्टिकोण ३
$("#txtName").removeAttr("disabled");
फिर, यदि आप jQuery 1.7 या उच्चतर संस्करण का उपयोग कर रहे हैं, तो attr () के बजाय प्रोप () का उपयोग करें। यानी कि। यह है कि आप jQuery का उपयोग करके किसी भी तत्व को कैसे सक्षम या अक्षम करते हैं।
2018 के लिए अपडेट करें:
अब jQuery की कोई आवश्यकता नहीं है और यह कुछ समय बाद document.querySelector
या document.querySelectorAll
(कई तत्वों के लिए) लगभग ठीक उसी तरह का काम करता है जैसे $, प्लस अधिक स्पष्ट getElementById
,getElementsByClassName
,getElementsByTagName
"इनपुट-चेकबॉक्स" वर्ग के एक क्षेत्र को अक्षम करना
document.querySelector('.input-checkbox').disabled = true;
या कई तत्व
document.querySelectorAll('.input-checkbox').forEach(el => el.disabled = true);
आप फार्म के तत्व को निष्क्रिय या सक्षम करने के लिए jQuery प्रोप () विधि का उपयोग कर सकते हैं या गतिशील रूप से jQuery का उपयोग कर नियंत्रित कर सकते हैं। प्रोप () विधि को jQuery 1.6 और इसके बाद के संस्करण की आवश्यकता होती है।
उदाहरण:
<script type="text/javascript">
$(document).ready(function(){
$('form input[type="submit"]').prop("disabled", true);
$(".agree").click(function(){
if($(this).prop("checked") == true){
$('form input[type="submit"]').prop("disabled", false);
}
else if($(this).prop("checked") == false){
$('form input[type="submit"]').prop("disabled", true);
}
});
});
</script>
अक्षम:
$('input').attr('readonly', true); // Disable it.
$('input').addClass('text-muted'); // Gray it out with bootstrap.
सक्षम करें:
$('input').attr('readonly', false); // Enable it.
$('input').removeClass('text-muted'); // Back to normal color with bootstrap.
इनपुट प्रकार के लिए सही अक्षम करें:
एक विशिष्ट इनपुट प्रकार के मामले में ( पूर्व पाठ प्रकार इनपुट )
$("input[type=text]").attr('disabled', true);
सभी प्रकार के इनपुट प्रकार के लिए
$("input").attr('disabled', true);
$("input[name=method]").prop('disabled', true);
यह मेरे लिए काम करता है
$("#values:input").attr("disabled",true);
$("#values:input").attr("disabled",false);
मैंने @gnarf उत्तर का उपयोग किया और इसे फ़ंक्शन के रूप में जोड़ा
$.fn.disabled = function (isDisabled) {
if (isDisabled) {
this.attr('disabled', 'disabled');
} else {
this.removeAttr('disabled');
}
};
फिर इस तरह का उपयोग करें
$('#myElement').disable(true);
दृष्टिकोण 4 (यह जंगली कोडर उत्तर का विस्तार है )
इस तरह का उपयोग करें,
$( "#id" ).prop( "disabled", true );
$( "#id" ).prop( "disabled", false );
<html>
<body>
Name: <input type="text" id="myText">
<button onclick="disable()">Disable Text field</button>
<button onclick="enable()">Enable Text field</button>
<script>
function disable() {
document.getElementById("myText").disabled = true;
}
function enable() {
document.getElementById("myText").disabled = false;
}
</script>
</body>
</html>
JQuery के मोबाइल में:
$('#someselectElement').selectmenu().selectmenu('disable').selectmenu('refresh', true);
$('#someTextElement').textinput().textinput('disable');
$('#someselectElement').selectmenu().selectmenu('enable').selectmenu('refresh', true);
$('#someTextElement').textinput('enable');