Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

<a> tag inside <label> tag not triggering checkbox

I have to use <a> inside a <label> tag. Because there are many css styles only apply to <a> in our current system. The <a> tag is not linking to any pages but for styling/hovering.

See code below:

<input type="checkbox" id="my-id">
<label for="my-id"><a href="javascript:void(0)">Some text</a></label>

But when clicking on "Some text", it doesn't toggle the checkbox status.

I've tried $.preventDefault()on the <a> tag but doesn't work.

What should i do to make the <a> behaves like a label?

like image 672
Ryan Hu Avatar asked Feb 04 '17 07:02

Ryan Hu


People also ask

What happens when you put a label element around an input element?

Think of an implicit label as hugging an input, and an explicit label as standing next to an input and holding its hand. An explicit label's for attribute value must match its input's id value. For example, if for has a value of name , then id should also have a value of name .

What does for attribute used for inside label?

The for attribute is an allowed attribute for <label> and <output> . When used on a <label> element it indicates the form element that this label describes. When used on an <output> element it allows for an explicit relationship between the elements that represent values which are used in the output.


1 Answers

If you remove the href attribute from the a element, clicking on the text will toggle the checkbox.

<input type="checkbox" id="my-id">
<label for="my-id"><a>Some text</a></label>

As the HTML spec states:

The href attribute on a and area elements is not required

like image 153
GOTO 0 Avatar answered Sep 24 '22 00:09

GOTO 0