Skip to content Skip to sidebar Skip to footer

Checkbox Shows Hidden Field - Not Working Onload

I am using this probably ugly javascript to show a text box (in a li tag plus its label) if a checkbox is checked. $('#li-2-21').css('display','none'); $('#Languages-spoken-a

Solution 1:

Most concisely:

$(document).ready(function() {
   $("#Languages-spoken-and-understood-8").change(function() {
      $("#li-2-21")[$(this).is(":checked") ? 'show' : 'hide']("fast")
  }).change();
});

EDIT : switched from click to change event

Solution 2:

Extract your click function into a separate function (not inline) and run it on the load of the page:

functionToggleCheckbox() {
    if ($("#Languages-spoken-and-understood-8").is(":checked"))
    {
        $("#li-2-21").show("fast");
    }
    else
    {     
        $("#li-2-21").hide("fast");
    }
}

$(function() {
    $("#Languages-spoken-and-understood-8").click(ToggleCheckbox);
    ToggleCheckBox(); 
});

If you want to clean it up a bit I'd extract the checkbox and languages element into separate vars:

var languages = $("#Languages-spoken-and-understood-8");
var checkbox = $("#li-2-21");

make sure you place them in the appropriate scope though. This will mean that jQuery doesn't need to keep requerying the DOM to find them.

Solution 3:

Just call the function immediately upon defining it's function. Example:

   $("#Languages-spoken-and-understood-8").click(function(){
    if ($("#Languages-spoken-and-understood-8").is(":checked"))
    {
        $("#li-2-21").show("fast");
    }
    else
    {     
        $("#li-2-21").hide("fast");
    }
  }).click();

Post a Comment for "Checkbox Shows Hidden Field - Not Working Onload"