How do I make a checkbox toggle from clicking on the text label as well?

前端 未结 8 1947
一生所求
一生所求 2020-12-15 03:38

Checkboxes in HTML forms don\'t have implicit labels with them. Adding an explicit label (some text) next to it doesn\'t toggle the

相关标签:
8条回答
  • 2020-12-15 03:52

    Wrapping with the label still doesn't allow clicking 'anywhere in the box' - still just on the text! This does the job for me:

    <div onclick="dob.checked=!dob.checked" class="checkbox"><input onclick="checked=!checked" id="dob" type="checkbox"/>Date of birth entry must be completed</div>
    

    but unfortunately has lots of javascript that is effectively toggling twice.

    0 讨论(0)
  • 2020-12-15 03:53

    As indicated by @Gatekiller and others, the correct solution is the <label> tag.

    Click-in-the-text is nice, but there is another reason to use the <label> tag: accessibility. The tools that visually-impaired people use to access the web need the <label>s to read-out the meaning of checkboxes and radio buttons. Without <label>s, they have to guess based on surrounding text, and they often get it wrong or have to give up.

    It is very frustrating to be faced with a form that reads "Please select your shipping method, radio-button1, radio-button2, radio-button3".

    Note that web accessibility is a complex topic; <label>s are a necessary step but they are not enough to guarantee accessibility or compliance with government regulations where it applies.

    0 讨论(0)
  • 2020-12-15 03:55

    Set the CSS display property for the label to be a block element and use that instead of your div - it keeps the semantic meaning of a label while allowing whatever styling you like.

    For example:

    label {
      width: 100px;
      height: 100px;
      display: block;
      background-color: #e0e0ff;
    }
    <label for="test">
      A ticky box! <input type="checkbox" id="test" />
    </label>

    0 讨论(0)
  • 2020-12-15 03:55

    this should work:

    <script>
    function checkbox () {
        var check = document.getElementById("myCheck").checked;
        var box = document.getElementById("myCheck")
    
        if (check == true) {
            box.checked = false;
        }
        else if (check == false) {
            box.checked = true;
        }
    }
    </script>
    <input type="checkbox"><p id="myCheck" onClick="checkbox();">checkbox</p>
    

    if it doesnt, pleae corect me!

    0 讨论(0)
  • 2020-12-15 03:56

    You need to just wrap the checkbox in label tag just like this

     <label style="height: 10px; width: 150px; display: block; ">
      [Checkbox Label Here] <input type="checkbox"/>
     </label>
    

    FIDDLE

    or you can also use the for attribute of label and id of your checkbox like below

    <label for="other">Other Details</label>
    <input type="checkbox" id="other" />
    

    FIDDLE

    0 讨论(0)
  • 2020-12-15 03:59

    You can wrap your checkbox in the label:

    <label style="display: block; padding: 50px 0 0 50px; background-color: pink; width: 80px; height: 80px">
      <input type="checkbox" name="surname">
    </label>
    
    0 讨论(0)
提交回复
热议问题