क्लिक करने योग्य लेबल के साथ चेकबॉक्स कैसे बनाएं?


1020

मैं एक लेबल के साथ HTML चेकबॉक्स कैसे बना सकता हूं जो क्लिक करने योग्य है (इसका मतलब है कि लेबल पर क्लिक करने से चेकबॉक्स चालू / बंद हो जाता है)?


जवाबों:


1914

विधि 1: लपेटें लेबल टैग

एक labelटैग के भीतर चेकबॉक्स लपेटें :

<label><input type="checkbox" name="checkbox" value="value">Text</label>

विधि 2: forविशेषता का उपयोग करें

forविशेषता का उपयोग करें (चेकबॉक्स से मिलान करें id):

<input type="checkbox" name="checkbox" id="checkbox_id" value="value">
<label for="checkbox_id">Text</label>

नोट : आईडी पृष्ठ पर अद्वितीय होना चाहिए!

व्याख्या

चूंकि अन्य उत्तर इसका उल्लेख नहीं करते हैं, एक लेबल में 1 इनपुट तक शामिल forहो सकता है और विशेषता को छोड़ सकता है, और यह माना जाएगा कि यह इसके भीतर इनपुट के लिए है।

से अंश w3.org (मेरे जोर देने के साथ):

[विशेषता के लिए] स्पष्ट रूप से लेबल को दूसरे नियंत्रण के साथ परिभाषित किया जा रहा है। जब मौजूद है, तो इस विशेषता का मान उसी दस्तावेज़ में कुछ अन्य नियंत्रण की आईडी विशेषता के मूल्य के समान होना चाहिए। अनुपस्थित होने पर, परिभाषित किया जा रहा लेबल तत्व की सामग्री से जुड़ा होता है।

एक लेबल को अन्य नियंत्रण के साथ जोड़ने के लिए, नियंत्रण तत्व LABEL तत्व की सामग्री के भीतर होना चाहिए । इस स्थिति में, LABEL में केवल एक नियंत्रण तत्व हो सकता है। संबंधित नियंत्रण से पहले या बाद में लेबल को ही तैनात किया जा सकता है।

इस विधि का उपयोग करने के कुछ फायदे हैं for:

  • idहर चेकबॉक्स (महान!) को असाइन करने की आवश्यकता नहीं है ।

  • में अतिरिक्त विशेषता का उपयोग करने की आवश्यकता नहीं है <label>

  • इनपुट का क्लिक करने योग्य क्षेत्र लेबल का क्लिक करने योग्य क्षेत्र भी है, इसलिए क्लिक करने के लिए दो अलग-अलग स्थान नहीं हैं जो चेकबॉक्स को नियंत्रित कर सकते हैं - केवल एक, कोई फर्क नहीं पड़ता कि कितना अलग <input>और वास्तविक लेबल पाठ हैं, और कोई फर्क नहीं पड़ता कि आप किस तरह का सीएसएस उस पर लागू करें।

कुछ सीएसएस के साथ डेमो:

label {
 border:1px solid #ccc;
 padding:10px;
 margin:0 0 10px;
 display:block; 
}

label:hover {
 background:#eee;
 cursor:pointer;
}
<label><input type="checkbox" />Option 1</label>
<label><input type="checkbox" />Option 2</label>
<label><input type="checkbox" />Option 3</label>


14
इसे प्यार करें, लेकिन कृपया फिर से संपादित करें। यह केवल चेकबॉक्स के लिए अच्छा है। चलो लोगों को लेबलों के साथ अपने अन्य इनपुट को लपेटने के लिए प्रोत्साहित न करें, क्योंकि इससे ग्रिड सिस्टम टूट जाता है और मोबाइल जवाबदेही से आने के लिए कठिन हो जाएगा
Max

1
अगर कोई इस टिप्पणी को समझा सकता है @ जॉन ने कृपया छोड़ दिया, क्योंकि इससे मुझे कोई मतलब नहीं है।
वेस्ले मर्क जूल

16
@ जॉन जो मार्कअप गाइड है विशेष रूप से बूटस्ट्रैप के लिए। यदि आप एक रूपरेखा का उपयोग नहीं कर रहे हैं, या एक अलग का उपयोग कर रहे हैं, तो यह पूरी तरह से ठीक होना चाहिए। उत्तर के लिए धन्यवाद।
वेस्ले मर्क जूल

3
@ जॉन। आपके द्वारा लिंक किए गए पृष्ठ पर, बूटस्ट्रैप सभी लेबल के साथ चेकबॉक्स को लपेटता है, मुझे कोई चेतावनी नहीं दिखती है जैसा कि आप सभी को इंगित करते हैं, शायद यह अब नवीनतम बूटस्ट्रैप के लिए प्रासंगिक नहीं है।
user2144406 16

2
जैसा कि मैंने आज सीखा, विधि 1 और विधि 2 को न मिलाएं। यदि आप एक लेबल में चेकबॉक्स को लपेटते हैं और इसमें शामिल हैं, तो लेबल पर क्लिक करने से चेकबॉक्स ट्रिगर नहीं होगा।
BBlake

50

बस सुनिश्चित करें कि लेबल इनपुट के साथ जुड़ा हुआ है।

<fieldset>
  <legend>What metasyntactic variables do you like?</legend>

  <input type="checkbox" name="foo" value="bar" id="foo_bar">
  <label for="foo_bar">Bar</label>

  <input type="checkbox" name="foo" value="baz" id="foo_baz">
  <label for="foo_baz">Baz</label>
</fieldset>

1
मैं इस तथ्य से भ्रमित हूं कि आपने दो चेकबॉक्स को एक ही नाम दिया है, और विभिन्न मूल्य। क्या यह उद्देश्य पर है?
लार्स

2
@LarsH - हाँ, यह है कि आप कैसे चेकबॉक्स समूह बनाते हैं।
क्वेंटिन

धन्यवाद। मैं w3.org/wiki/HTML/Elements/input/checkbox देख रहा था और यह उस संबंध में मददगार नहीं था।
लार्स ऑग

2
PHP के साथ, $ _POST ['foo'] बनाने वाले अभ्यस्त हमेशा एक समय में अधिकतम दो मानों में से एक होते हैं? भले ही दोनों ने चेक किया हो। एक चेकबॉक्स समूह क्या है?
jeromej

2
@JeromeJ: php इसे सही तरीके से संभालने के लिए, आपको वर्ग कोष्ठक को नाम में जोड़ना होगा, जैसे <input type="checkbox" name="foo[]" value="bar" ...>:। यह आपको एक सरणी देगा जिसमें सभी चेक किए गए बॉक्स के मान शामिल हैं (जिसका यह नाम है)। उदाहरण के लिए $_POST['foo'][0]हो सकता है barऔर $_POST['foo'][1]हो सकता है baz(यदि दोनों की जाँच हो)।
लेविट

11

आप अपने सभी चेकबॉक्स के मूल्य विशेषताओं (क्रमशः) से अपने लेबल को चुनने और प्रदर्शित करने के लिए CSS छद्म तत्वों का उपयोग कर सकते हैं।
संपादित करें: यह केवल वेबकिट और ब्लिंक आधारित ब्राउज़रों (क्रोम (ium), सफारी, ओपेरा ....) और इस तरह अधिकांश मोबाइल ब्राउज़रों के साथ काम करेगा। यहाँ कोई फ़ायरफ़ॉक्स या IE समर्थन नहीं है।
यह केवल तब उपयोगी हो सकता है जब आपके ऐप पर वेबकिट / ब्लिंक को एम्बेड किया जाए।

<input type="checkbox" value="My checkbox label value" />
<style>
[type=checkbox]:after {
    content: attr(value);
    margin: -3px 15px;
    vertical-align: top;
    white-space:nowrap;
    display: inline-block;
}
</style>

सभी छद्म तत्व लेबल क्लिक करने योग्य होंगे।

डेमो: http://codepen.io/mrmoje/pen/oteLl , इसका सार


सच। गेको और ट्राइडेंट और गेको को यह पसंद नहीं है। यह केवल वेबकिट और ब्लिंक के साथ काम करेगा। मैं जवाब अपडेट करूंगा
करूंगा mrmoje

3
Downvoted। हालांकि यह संभव है, यह एक बुरा तरीका है - कई ब्राउज़रों पर काम नहीं करता है, पहुंच के लिए अच्छा नहीं है।
जेम्स बिलिंगम

संगतता एक तरफ जारी रखती है, यह समाधान शीर्ष उत्तर के रूप में शब्दार्थ नहीं है क्योंकि <लेबल> और <इनपुट> के बीच मार्कअप में कोई सीधा संबंध नहीं है
डेडबॉय

"यह वेबकिट / ब्लिंक पर काम करता है" एक बग की तरह बदबू आ रही है ( stackoverflow.com/questions/2587669/… ) तो यह कभी भी काम करना बंद कर सकता है।
एक्सनोस


3
<label for="myInputID">myLabel</label><input type="checkbox" id="myInputID" name="myInputID />

1
चूँकि यह कुछ पाठकों के लिए भ्रामक हो सकता है, इसलिए आपको nameविशेषता के मूल्य को उस मूल्य से भिन्न कुछ forऔर idविशेषताओं और गुणों में बदलना चाहिए , क्योंकि ये दोनों संबंधित हैं, जबकि nameऐसा नहीं है (यह शामिल होना अनिवार्य है, हालांकि मुझे विश्वास है कि) ।
डिझुंइट

3

यह भी काम करता है:

<form>
    <label for="male"><input type="checkbox" name="male" id="male" />Male</label><br />
    <label for="female"><input type="checkbox" name="female" id="female" />Female</label>
</form>

आप अपने उदाहरण में विशेषताओं forऔर idविशेषताओं को हटा सकते हैं , क्योंकि labelटैग में केवल एक इनपुट तत्व होता है।
Dzhuneyt

2

इससे आपको मदद मिलनी चाहिए: W3Schools - Labels

<form>
  <label for="male">Male</label>
  <input type="radio" name="sex" id="male" />
  <br />
  <label for="female">Female</label>
  <input type="radio" name="sex" id="female" />
</form>


0

चेकबॉक्स के साथ जुड़ने के लिए labelतत्व और forविशेषता का उपयोग करें :

<label for="myCheckbox">Some checkbox</label> <input type="checkbox" id="myCheckbox" />



-7

इसे इस्तेमाल करो

<input type="checkbox" name="checkbox" id="checkbox_id" value="value">
<label for="checkbox_id" id="checkbox_lbl">Text</label>


$("#checkbox_lbl").click(function(){ 
    if($("#checkbox_id").is(':checked'))
        $("#checkbox_id").removAttr('checked');
    else
       $("#checkbox_id").attr('checked');
    });
});

9
ऐसा करने के लिए जावास्क्रिप्ट का उपयोग करना आवश्यक नहीं है। यह HTML में बनाया गया है।
लास बंक

4
@LasseBunk, यदि केवल यह जावास्क्रिप्ट था, लेकिन इसके लिए पूरे jQuery लाइब्रेरी की आवश्यकता है। चलो देखते हैं कि क्या कोई कोणीय 2 समाधान के साथ आ सकता है।
laurent
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.