클릭 가능한 라벨이있는 확인란을 만드는 방법은 무엇입니까?


답변:


1915

방법 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>

참고 : ID는 페이지에서 고유해야합니다!

설명

다른 답변에서는 언급하지 않으므로 레이블은 최대 1 개의 입력을 포함하고 for속성을 생략 할 수 있으며 그 안에 입력 된 것으로 간주됩니다.

w3.org 에서 발췌 (내 강조와 함께) :

[for 속성]은 정의 된 레이블을 다른 컨트롤과 명시 적으로 연결합니다. 존재하는 경우,이 속성의 값은 동일한 문서에있는 다른 컨트롤의 id 속성 값과 같아야합니다. 없는 경우 정의중인 레이블은 요소의 내용과 연관됩니다.

레이블을 다른 제어와 내재적으로 연관 시키려면 제어 요소가 LABEL 요소의 컨텐츠 내에 있어야합니다 . 이 경우 LABEL에는 하나의 제어 요소 만 포함될 수 있습니다 . 레이블 자체는 관련 컨트롤 전후에 배치 될 수 있습니다.

이 방법을 사용하면 다음과 같은 장점이 있습니다 for.

  • id모든 확인란에을 지정할 필요가 없습니다 (좋습니다!).

  • 에서 추가 속성을 사용할 필요가 없습니다 <label>.

  • 입력의 클릭 가능한 영역은 레이블의 클릭 가능한 영역이기도하므로 확인란을 제어 할 수있는 별도의 두 위치가 없습니다. <input>실제 레이블 텍스트와 얼마나 멀리 떨어져 있는지, CSS의 종류에 관계없이 하나만 그것에 적용하십시오.

CSS로 데모하기 :

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
마음에 들지만 다시 편집하십시오. 이것은 확인란에만 유용합니다. 그 휴식 그리드 시스템 및 모바일 대응이 어렵게 될 것이기 때문에의에 의해 온, 라벨과의 다른 입력을 래핑하는 사람들을 격려하지 말자
최대

1
누군가 @John이 남긴 의견을 설명 할 수 있다면 전혀 이해가되지 않습니다.
웨슬리 머치

16
@John은 부트 스트랩을위한 마크 업 가이드입니다. 프레임 워크를 사용하지 않거나 다른 프레임 워크를 사용하는 경우 완전히 괜찮습니다. 답장을 보내 주셔서 감사합니다.
웨슬리 머치

3
@남자. 링크 된 페이지에서 부트 스트랩 예제 레이블이있는 모든 랩 확인란을 표시합니다. 표시 된 경고가 표시되지 않습니다. 아마도 최신 부트 스트랩과 관련이 없습니다.
user2144406

2
오늘 배운 것처럼 방법 1과 방법 2를 섞지 마십시오. 확인란에 레이블을 감싸고 for를 포함 시키면 레이블을 클릭해도 확인란이 트리거되지 않습니다.
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
두 개의 확인란에 동일한 이름과 다른 값을 부여했다는 사실에 혼란스러워합니다. 의도적인가요?
LarsH

2
@LarsH — 예, 확인란 그룹을 만드는 방법입니다.
Quentin

감사. w3.org/wiki/HTML/Elements/input/checkbox를 보고 있었는데 그 점에서 도움이되지 않았습니다.
LarsH

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 의사 요소를 사용하여 모든 확인란의 값 속성에서 레이블을 각각 선택하여 표시 할 수도 있습니다.
편집 : 이것은 웹킷 및 깜박임 기반 브라우저 (Chrome (ium), Safari, Opera ....) 및 대부분의 모바일 브라우저에서만 작동합니다. 여기에서는 Firefox 또는 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 , + 요점


진실. 도마뱀과 삼지창과 도마뱀은 이것을 좋아하지 않는 것 같습니다. 이것은 Webkit 및 Blink에서만 작동합니다. 나는 대답을 업데이트 할 것이다
mrmoje

3
공감. 가능하지만 나쁜 방법입니다. 많은 브라우저에서 작동하지 않으며 접근성이 좋지 않습니다.
James Billingham

호환성 문제는 제쳐두고,이 솔루션은 <label>과 <input> 사이에 마크 업에 직접적인 연관이 없기 때문에 최고 답변만큼 의미가 없습니다.
deadboy

"Webkit / Blink에서 작동"은 ( stackoverflow.com/questions/2587669/… )를 사용하는 버그와 같은 냄새가 나므로 언제든지 작동을 멈출 수 있습니다.
Xenos

7
<label for="vehicle">Type of Vehicle:</label>
<input type="checkbox" id="vehicle" name="vehicle" value="Bike" />

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

1
일부 독자에게는 혼란 스러울 수 있으므로 name속성의 값을 forand id속성 에있는 값과 다른 값으로 변경해야합니다. 이 두 가지는 관련되어 있기 때문에 name그렇지 않습니다 (필자는 포함해야하지만 여전히 포함되어야합니다) .
Dzhuneyt

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>

태그에는 입력 요소가 하나만 있기 때문에 예제에서 forid속성을 생략 할 수 있습니다 label.
Dzhuneyt

2

이것은 당신을 도움이 될 것입니다 W3 스쿨 - 레이블

<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
이를 위해 JavaScript를 사용할 필요는 없습니다. HTML에 내장되어 있습니다.
Lasse Bunk

4
@LasseBunk, JavaScript 일뿐이지만 이것이 작동하려면 전체 jQuery 라이브러리가 필요합니다. 누군가 Angular 2 솔루션을 생각해 낼 수 있는지 봅시다.
laurent
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.