div के अंदर सभी फॉर्म एलिमेंट्स को डिसेबल करें


161

क्या सभी प्रकार (textarea / textfield / विकल्प / इनपुट / चेकबॉक्स / सबमिट आदि) को एक प्रकार से निष्क्रिय करने का एक तरीका है, केवल माता-पिता का नाम jquery / जावास्क्रिप्ट में बताकर?


4
ध्यान दें कि ऐसा करने से आप फॉर्म सबमिट करते समय उन तत्वों के मान "गायब" हो जाते हैं - मान को संरक्षित करने के लिए उन्हें readOnlyअक्षम करें , अक्षम नहीं।
शैडो विजार्ड इयर फॉर यू


1
आइडिया इसे नियंत्रित किए जा सकने वाले नियंत्रणों के सामने छिपा / प्रदर्शित कर सकता है / क्लिक करने से रोकता है, साथ ही स्टाइल को सीएसएस के साथ अक्षम नियंत्रण देता है।
जैदर

जवाबों:


261

:inputमूल चयनकर्ता के साथ चयनकर्ता का उपयोग करने का प्रयास करें :

$("#parent-selector :input").attr("disabled", true);

क्या मैं इसे 0 से वैल्यू के अंदर सभी इनपुट सेट करने के लिए उपयोग कर सकता हूं?
जैकसन

2
मैं <a> को भी अक्षम करना चाहता हूं ... मेरे <a> के पास भी है
RAJ पर क्लिक करें

7
JQuery का हवाला देते हुए : क्योंकि: इनपुट एक jQuery एक्सटेंशन है और CSS विनिर्देशन का हिस्सा नहीं है, इस सवाल का उपयोग करते हुए: इनपुट देशी DOM querySelectorAll () विधि द्वारा प्रदान किए गए प्रदर्शन को बढ़ावा देने का लाभ नहीं उठा सकता है। उपयोग करते समय सर्वोत्तम प्रदर्शन प्राप्त करने के लिए: तत्वों का चयन करने के लिए इनपुट, पहले शुद्ध सीएसएस चयनकर्ता का उपयोग करके तत्वों का चयन करें, फिर .filter (": इनपुट") का उपयोग करें।
एक्मे

2
@acme: 100% सहमत हूं, लेकिन प्रश्न यह संकेत नहीं देता है कि मैं किस चयनकर्ता को संभवतः फ़िल्टर कर सकता हूं। मुझे केवल यह जानकारी दी गई थी कि उपयोगकर्ता को मूल divनाम के साथ ऐसा करने में सक्षम होना चाहिए और वह यह है। यदि अधिक जानकारी दी जाए तो मैं अधिक कुशल समाधान के साथ आ सकता हूं।
एंड्रयू व्हिटकर

1
.Attr () (jquery 1.6 के ऊपर) के बजाय .prop () का उपयोग करें
अक्षय गुंडेवार

154
$('#mydiv').find('input, textarea, button, select').attr('disabled','disabled');

4
यह होना चाहिए ('इनपुट, टेक्सारिया, बटन') सभी चयनकर्ताओं को उद्धरण के एक सेट के साथ उद्धृत किया जाना चाहिए। api.jquery.com/multiple-selector इसे अपने तरीके से करते हुए आप कई तर्क भेज रहे हैं।
इवान इवानिक

2
यह आपको केवल इनपुट्स की खोज करेगा, textareas और बटन की अनदेखी। : इनपुट चयनकर्ता जाने का रास्ता है, लेकिन यदि आप उन्हें स्पष्ट रूप से सूचीबद्ध करना चाहते हैं, तो आपको उपयोग करने की आवश्यकता होगी $('#mydiv').find('input, textarea, button')
मार्क हिल्ड्रेथ

1
... या सिर्फ $ ('# अपना-अपना')। बच्चे ()। प्रोप ('विकलांग', सत्य);
walv

@ आपका कोड केवल तभी काम करता है जब सभी फॉर्म तत्व फॉर्म का एकल वंशज हों। खोजें () अवरोही स्तर की परवाह किए बिना सूची में सभी तत्वों को ढूंढता है। कोड की यह पंक्ति नए jquery संस्करणों के लिए attr के बजाय प्रोप का उपयोग करने के अलावा अन्य सही है।
क्रिस ओ

32

Jquery के लिए 1.6+, के .prop()बजाय का उपयोग करें .attr(),

$("#parent-selector :input").prop("disabled", true);

या

$("#parent-selector :input").attr("disabled", "disabled");

2
आप सही हैं लेकिन कुछ समय प्रोप काम करते हैं और कुछ समय काम नहीं करते हैं, विशेष रूप से चेकबॉक्स और रेडियोबॉटन के कारण
डेमन

मुझे पता है कि यह एक पुराना धागा है, लेकिन यह टाइपस्क्रिप्ट का उपयोग करते समय कुछ त्रुटियों को मारता है
साइमन मूल्य

5
    $(document).ready(function () {
        $('#chkDisableEnableElements').change(function () {
            if ($('#chkDisableEnableElements').is(':checked')) {
                enableElements($('#divDifferentElements').children());
            }
            else {
                disableElements($('#divDifferentElements').children());
            }
        });
    });

    function disableElements(el) {
        for (var i = 0; i < el.length; i++) {
            el[i].disabled = true;

            disableElements(el[i].children);
        }
    }

    function enableElements(el) {
        for (var i = 0; i < el.length; i++) {
            el[i].disabled = false;

            enableElements(el[i].children);
        }
    }

4

बस कोड की यह पंक्ति सभी इनपुट तत्वों को अक्षम कर देगी

$('#yourdiv *').prop('disabled', true);

मेरी राय से सबसे अच्छा जवाब।
Ajay2707

2

केवल HTML विशेषता 'अक्षम' का उपयोग करके इसे कैसे प्राप्त किया जाए

<form>
 <fieldset disabled>
  <div class="row">
   <input type="text" placeholder="">
   <textarea></textarea>
   <select></select>
  </div>
  <div class="pull-right">
    <button class="button-primary btn-sm" type="submit">Submit</button>
  </div>
 </fieldset>
</form>

बस उस फ़ील्डसेट के अंदर सभी फ़ील्ड्स को अक्षम करके, उस फ़ील्डसेट के अंदर अक्षम कर दिया जाता है।

$('fieldset').attr('disabled', 'disabled');

1

मैं नीचे विभिन्न बिंदुओं पर फ़ंक्शन का उपयोग कर रहा हूं। जब तक सही चयनकर्ता का उपयोग किया जाता है तब तक एक टेबल में एक div या बटन तत्वों में काम करता है। बस ": बटन" मेरे लिए फिर से सक्षम नहीं होगा।

function ToggleMenuButtons(bActivate) {
    if (bActivate == true) {
        $("#SelectorId :input[type='button']").prop("disabled", true);
    } else {
        $("#SelectorId :input[type='button']").removeProp("disabled");
    }
}

महान समाधान में दो।
3 नियम

0

निम्नलिखित सभी इनपुट को अक्षम कर देगा लेकिन इसे btn वर्ग में सक्षम नहीं करेगा और अक्षम सीएसएस को अधिलेखित करने के लिए वर्ग भी जोड़ा जाएगा।

$('#EditForm :input').not('.btn').attr("disabled", true).addClass('disabledClass');

सीएसएस वर्ग

.disabledClass{
  background-color: rgb(235, 235, 228) !important;
}

0

मेरे लिए स्वीकृत उत्तर काम नहीं करता था क्योंकि मेरे पास कुछ एस्प नेट के छिपे हुए क्षेत्र थे जो अक्षम हो गए थे इसलिए मैंने केवल दृश्य क्षेत्रों को अक्षम करने के लिए चुना

//just to save the list so we can enable fields later
var list = [];
$('#parent-selector').find(':input:visible:not([readonly][disabled]),button').each(function () {
    list.push('#' + this.id);
});

$(list.join(',')).attr('readonly', true);

0

Div तत्वों को संपादित करने से रोकने के लिए CSS क्लास का उपयोग करें

सीएसएस:

.divoverlay
{
position:absolute;
width:100%;
height:100%;
background-color:transparent;
z-index:1;
top:0;
}

जे एस:

$('#divName').append('<div class=divoverlay></div>');

या HTML टैग में क्लास का नाम जोड़ें। यह डिव तत्वों को संपादित करने से रोकेगा।


0

केवल पाठ प्रकार

$(".form-edit-account :input[type=text]").attr("disabled", "disabled");

केवल पासवर्ड प्रकार

$(".form-edit-account :input[type=password]").attr("disabled", "disabled");

केवल ईमेल प्रकार

$(".form-edit-account :input[type=email]").attr("disabled", "disabled");
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.