2010-01-05 16 views
25

गुण मैं दो तत्वों JQuery के माध्यम से एक ही नामJQuery - सेट मूल्य

<input type="hidden" name= "chk0" value=""> 
<input type="checkbox" name="chk0" value="true" disabled> 

होने के साथ एचटीएमएल निम्नलिखित है, मैं चेकबॉक्स सक्षम सेट करना चाहते हैं। तो, मैं इस तरह कुछ उपयोग कर रहा हूं:

$('#chk0').attr("disabled",false); 

लेकिन यह काम नहीं करता है। मुझे लगता है कि JQuery एक ही समान नाम वाले दो तत्वों के साथ भ्रमित हो रहा है। दुर्भाग्यवश, मैं दो अलग-अलग नामों का उपयोग करने से नहीं बच सकता क्योंकि, जब फॉर्म पोस्ट किया जाता है, तो मैं चाहता हूं कि सभी चेकबॉक्स पोस्ट हो जाएं (न कि केवल चेक किए गए हैं)। इसलिए मुझे एक ही नाम के साथ छिपा तत्व का उपयोग करना है .. तो, प्रश्न पर वापस, मैं उपरोक्त परिदृश्य में JQuery के माध्यम से चेकबॉक्स को कैसे सक्षम कर सकता हूं? क्या अटॉर्टर के लिए "टाइप" पैरामीटर है जो चेकबॉक्स से छिपा हुआ है?

धन्यवाद

उत्तर

26

वास्तविक कोड से पहले कुछ चीजें ..

हैश (#) जिसे आप चयनकर्ता के रूप में उपयोग करते हैं, आईडी के लिए है और तत्वों के नामों के लिए नहीं है। भी अक्षम विशेषता एक वास्तविक झूठी परिदृश्य नहीं है .. अगर उसने विशेषता अक्षम कर दी है तो इसका मतलब है कि यह सच है .. आपको विशेषता को हटाने और इसे गलत पर सेट करने की आवश्यकता नहीं है। भी .. प्रपत्र चयनकर्ताओं है कि एक के रूप में आइटम के विशिष्ट प्रकार की पहचान देखते हैं

तो कोड

$("input:checkbox[name='chk0']").removeAttr('disabled'); 

जवाब लाना होगा अप-टू-डेट

आप .prop() विधि का उपयोग करना चाहिए (v1.6 के बाद जोड़ा गया)

$("input:checkbox[name='chk0']").prop('disabled', false); // to enable the checkbox 

और

$("input:checkbox[name='chk0']").prop('disabled', true); // to disable the checkbox 
+0

यह पूरी तरह से काम करता है ... अगर मुझे चेकबॉक्स सक्षम करना है, तो यह $ ("इनपुट: चेकबॉक्स [name = 'chk0']") होगा। Attr ('अक्षम', झूठा); – Jake

+0

अच्छी तरह से .. जैसा कि http://www.w3schools.com/tags/att_input_disabled.asp में दिखाया गया है, आधिकारिक मान को फिर से अक्षम कर दिया जाएगा ताकि $ ("इनपुट: चेकबॉक्स [name = 'chk0']")। Attr ('अक्षम', 'अक्षम'); –

+0

इसे मिला .. इस पर होगन के लिए धन्यवाद .. $ ("इनपुट: चेकबॉक्स [नाम = 'chk0']")। Attr ('अक्षम', 'अक्षम'); ठीक काम करता है – Jake

2

$ ("# chk0") आईडी chk0 साथ एक तत्व की बात कर रहा है। आप तत्वों को आईडी जोड़ने का प्रयास कर सकते हैं। आईडी अद्वितीय हैं, भले ही नाम समान हैं, ताकि jQuery में आप एक आईडी को अपने आईडी द्वारा एक्सेस कर सकें।

+0

+1 यह आसान है और 'चेकबॉक्स' चयनकर्ता की तुलना में बहुत तेज़ होगा जो गैर-मानक (ब्राउज़र की तेज क्वेरी चयनकर्ता के बजाय धीमे सिज़ल चयनकर्ता इंजन का उपयोग करने के लिए jQuery को मजबूर करता है)। – bobince

0

चेकबॉक्स को विशिष्ट रूप से पहचानने के लिए एक आईडी का उपयोग करें। आपकी वर्तमान उदाहरण '# chk0' का एक आईडी के साथ चेकबॉक्स का चयन करने की कोशिश कर रहा है:

<input type="checkbox" id="chk0" name="chk0" value="true" disabled>

$('#chk0').attr("disabled", "disabled");

तुम भी चेकबॉक्स सक्षम करने के लिए disabled के लिए विशेषता को दूर करने की आवश्यकता होगी। कुछ की तरह:

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

के लिए removeAttr

डॉक्स देखें अक्षम करने/एक इनपुट तत्व को सक्षम करने के लिए मूल्य एक्सएचटीएमएल इस प्रकार है:

<input type="checkbox" id="chk0" name="chk0" value="true" disabled="disabled" /> 
<input type="checkbox" id="chk0" name="chk0" value="true" /> 

ध्यान दें कि यह अभाव की है अक्षम विशेषता जो इनपुट तत्व सक्षम करती है।

+0

उसी दस्तावेज़ में दो अलग-अलग तत्वों के लिए एक ही आईडी का उपयोग करना अवैध HTML है। –

0

आप इस तरह का चयन करने के विभिन्न वर्गों को जोड़ सकते हैं, या चयन प्रकार के आधार पर:

$('input[type="checkbox"]').removeAttr("disabled");

5

"सही" और "गलत" काम नहीं करते, निष्क्रिय करने के लिए, अक्षम मान पर सेट।

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

, सक्षम करने के लिए हटा दें।

$('.someElement').removeAttr('disabled');

साथ ही, अनेक आइटम का चयन किया जा रहा है के बारे में चिंता मत करो, jQuery उन सभी को उस मैच पर कार्यवाही करेंगे। यदि आपको केवल एक की आवश्यकता है तो आप कई चीजों का उपयोग कर सकते हैं: पहला,: अंतिम, एनएच, आदि

आप नाम का उपयोग कर रहे हैं और आईडी को अन्य उल्लेख के रूप में नहीं - याद रखें, यदि आप आईडी वैध xhtml का उपयोग करते हैं तो आईडी को अद्वितीय होना आवश्यक है।

+3

'attr' ऐसा नहीं करता जो आपको लगता है कि यह करता है। – bobince

10

गंभीरता से, बस इस के लिए jQuery का उपयोग नहीं करते। disabled फॉर्म तत्वों की एक बूलियन संपत्ति है जो 1 99 7 से हर प्रमुख ब्राउज़र में पूरी तरह से काम करती है, और कोई तत्व संभव नहीं है कि यह फ़ॉर्म तत्व अक्षम है या नहीं, यह बदलने के लिए आसान या अधिक सहज हो सकता है।

चेकबॉक्स का संदर्भ प्राप्त करने का सबसे आसान तरीका यह है कि इसे id दें।

document.getElementById("chk0_checkbox").disabled = false; 

आप चाहें, तो आप के बजाय jQuery का उपयोग कर सकते चेकबॉक्स को पकड़ पाने के लिए:

चेक बॉक्स सक्षम बनाने के लिए

<input type="hidden" name="chk0" value=""> 
<input type="checkbox" name="chk0" id="chk0_checkbox" value="true" disabled> 

और जावास्क्रिप्ट की लाइन: यहाँ मेरी सुझाई गई एचटीएमएल है

$("#chk0_checkbox")[0].disabled = false; 
+0

+1 इसके लिए जो कुछ भी अच्छा है उसके लिए jQuery का उपयोग करें, इसे हर जगह अंधा रूप से लागू न करें। – bobince

+0

क्या jquery का उपयोग करना गलत है ताकि आप सही तत्व का चयन कर सकें? एक ऐसे मामले में जहां आपने दो तत्वों को एक ही आईडी दिया था, लेकिन उन्हें विभिन्न तत्वों के साथ अन्य तत्वों के अंदर घोंसला दिया, ताकि आप $ (# parent1 #child) और दूसरे के साथ $ (# parent2 #child) के साथ एक का चयन कर सकें? – BCarpe

+0

@BCarpe: एक ही आईडी आईडी के साथ दो तत्व अमान्य है और इससे बचा जाना चाहिए। हालांकि, एक बार में कई तत्वों की संपत्ति सेट करने के लिए jQuery का उपयोग करना उचित है। मैं '1.6 (" जो भी ") का उपयोग करने का सुझाव दूंगा। प्रोप (" अक्षम ", झूठा) 'jQuery 1.6 में। –

संबंधित मुद्दे