2011-07-26 16 views
15

मुझे आश्चर्य है कि किसी स्क्रिप्ट के लिए किसी भी प्रकार के टॉगल बटन के साथ पृष्ठ पर सभी इनपुट तत्वों को सक्षम/अक्षम करना संभव है।स्क्रिप्ट?

मैं इसे googled लेकिन कुछ भी इस के अलावा भी उपयोगी नहीं मिला:

http://www.codetoad.com/javascript/enable_disable_form_element.asp लेकिन मैं कैसे टॉगल के लिए इसे संपादित करने के यकीन नहीं है।

+0

आपका लिंक टूट गया है –

+0

आप jQuery का उपयोग कर सकते है आप? jQuery का उपयोग करके दिल की धड़कन में इसे कर सकते हैं। – Mrchief

+0

चयन, टेक्स्टरेस, बटन भी चाहिए? – epascarello

उत्तर

18

एक काम कर उदाहरण:।

$().ready(function() { 
 

 

 
    $('#clicker').click(function() { 
 
     $('input').each(function() { 
 
      if ($(this).attr('disabled')) { 
 
       $(this).removeAttr('disabled'); 
 
      } 
 
      else { 
 
       $(this).attr({ 
 
        'disabled': 'disabled' 
 
       }); 
 
      } 
 
     }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
 
<input type='text'></input> 
 
<input type='text'></input> 
 
<input type='text'></input> 
 

 

 
<div id='clicker' style='background-color:#FF0000; height:40px; width:100px;'></div>

+0

धन्यवाद! मैं यह जोड़ना भूल गया कि मैं इसे jQuery में चाहता था लेकिन आपने इसे jq के लिए बनाया ताकि आपको धन्यवाद।मुझे लगता है कि मुझे यह सबसे अच्छा लगता है। – Charlie

+1

यह jsfiddle अब उपलब्ध नहीं है – sheba

21

इस तरह काम करेगा:

var inputs=document.getElementsByTagName('input'); 
for(i=0;i<inputs.length;i++){ 
    inputs[i].disabled=true; 
} 
+1

यह केवल तभी अक्षम होगा और उन्हें टॉगल नहीं करेगा क्योंकि प्रश्न – samccone

+0

ठीक है धन्यवाद, मैं इसे देख लूंगा। – Charlie

+0

'document.getElementById ('element-name')। अक्षम = झूठा; 'जो मैं खोज रहा था वह था। धन्यवाद! – Edward

1
for (var i = 0; i < document.getElementyByTagName('input').length; i++) { 
    document.getElementsByTagName('input')[i].disabled = 'disabled'; 
} 
+0

धन्यवाद! इसके लिए एचटीएमएल कैसा दिखता है? – Charlie

+0

फिर से यह उदाहरण केवल फ़ील्ड को अक्षम करेगा और उन्हें टॉगल नहीं करेगा – samccone

4

यहाँ पृष्ठ पर सभी आदानों टॉगल करने के लिए एक समारोह है:

function toggle_inputs() { 
    var inputs = document.getElementsByTagName('input'); 
    for (var i = inputs.length, n = 0; n < i; n++) { 
     inputs[n].disabled = !inputs[n].disabled; 
    } 
} 

यह logical NOT operator (विस्मयादिबोधक बिंदु) का उपयोग कर काम करता है , जो ऑपरेंड के विपरीत देता है। उदाहरण के लिए, !truefalse वापस करेगा। तो !inputs[n].disabled का उपयोग करके, यह वर्तमान में सेट किए गए कार्यों के विपरीत वापस लौटाएगा, जिससे इसे टॉगल किया जा सकेगा।

आप बटन को क्लिक करें घटना बाध्य करने के लिए कोड की जरूरत है:

document.getElementById('your_button_id').onclick = toggle_inputs; 

तुम भी addEventListener उपयोग कर सकते हैं, लेकिन इंटरनेट एक्सप्लोरर के साथ संगतता सहित अधिक जानकारी के लिए जुड़े हुए पृष्ठ देखें। मैंने जो कोड दिया है, उसे बिना किसी परेशानी वाले सभी ब्राउज़रों में काम करना चाहिए।

+0

कोड के लिए धन्यवाद, मैं इसे नज़दीकी रूप से देखूंगा। – Charlie

1

http://code.google.com/p/getelementsbyclassname/

^^ रॉबर्ट नीमैन एक "वर्ग द्वारा तत्वों मिलता है" स्क्रिप्ट है। मूल रूप से आप सिर्फ एक ही कक्षा के उन सभी इनपुट तत्वों आवंटित चाहते हैं और फिर कुछ ऐसा कार्य करें:

//Collapse all the nodes 
function collapseNodesByClass(theClass){ 
    var nodes = getElementsByClassName(theClass); 
    for(i = 0; i < nodes.length; i++){ 
    nodes[i].style.display='none'; 
    } 
} 

इस कोड का एक टुकड़ा मैं वास्तव में वर्तमान में किसी वर्ग नाम के साथ सब कुछ संक्षिप्त करने के लिए उपयोग कर रहा हूँ है (यह ऊपर वर्णित स्क्रिप्ट का उपयोग करता है)। लेकिन किसी भी मामले में मुझे लगता है कि आपकी समस्या की कुंजी एक साथ कई तत्वों को संदर्भित करने में सक्षम है, जो कि स्क्रिप्ट आपकी मदद करेगी।

इसके अलावा अपने सवाल में लिंक मेरे लिए :(काम नहीं किया

+0

मैंने लिंक तय किया और कोड के लिए धन्यवाद। यदि आपके पास अधिक जेएस प्रश्न हैं तो मैं आपको बता दूंगा। – Charlie