• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • Protecting HTML Page Elements with JavaScript and CSS

    December 4, 2002 Timothy Prickett Morgan

    Hey, David:

    I have an HTML form with several optional elements. Is there a way to protect and unprotect text elements based on a checkbox? When the user checks an alternate shipping address box, I want to open up a set of shipping address fields. I tried to do this with JavaScript, but the value of the checkbox doesn’t seem to change in Internet Explorer.

    — Loren

    You were on the right track checking the value for the checkbox; however checkboxes are a special case.

    The value attribute for checkboxes represents what the browser sends to the server when the checkbox is checked but doesn’t indicate whether it is checked. There is a special checked property that indicates the checked state.

    I have provided a snippet of HTML code to get you started. In this example, I have also grayed out the shipping description fields to make it more obvious to the user that the fields are protected:

    <html>
    <head>
      <title&gt; Demonstrate Optional Form Elements</title>
      <style>
        .protected {
        color: gray;
        font-style: italic;}
        .unprotected {
        color: black;
        font-style: normal;}
      </style>
      <script language="JavaScript" type="text/javascript">
        function shipToChange() {
          if (document.getElementById("shipTo").checked == true) {
            document.getElementById("textShipTo").className="unprotected";
            document.getElementById("shipToName").disabled=false;
            document.getElementById("shipToName").focus();
            document.getElementById("shipToLine1").disabled=false;
            document.getElementById("shipToLine2").disabled=false;
            document.getElementById("shipToCity").disabled=false;
            document.getElementById("shipToState").disabled=false;
            document.getElementById("shipToZip").disabled=false;
          }
          else {
            document.getElementById("textShipTo").className="protected";
            document.getElementById("shipToName").disabled=true;
            document.getElementById("shipToLine1").disabled=true;
            document.getElementById("shipToLine2").disabled=true;
            document.getElementById("shipToCity").disabled=true;
            document.getElementById("shipToState").disabled=true;
            document.getElementById("shipToZip").disabled=true;
          }
        }
      </script>
    </head>
    <body>
      <form name="myForm" method="POST">
        <table>
          <tfoot>
            <tr>
              <td colspan="2">
                <input type="submit" name="submit" value="Update">
                <input type="submit" name="cancel" value="Cancel">
              </td>
            </tr>
          </tfoot>
          <tbody>
            <tr valign="top">
              <td>Billing Address:</td>
              <td>
                <input type="text" name="billToName" size="30"><br />
                <input type="text" name="billToLine1" size="30"><br />
                <input type="text" name="billToLine2" size="30"><br />
                <input type="text" name="billToCity" size="20">
                <input type="text" name="billToState" size="2">
                <input type="text" name="billToZip" size="10">
              </td>
            </tr>
            <tr align="top" valign="top">
              <td>Specify Shipping Address:</td>
              <td><input type="checkbox" name="shipTo" onchange="shipToChange();"></td>
            </tr>
        <tr valign="top">
              <td id="textShipTo">Ship To:</td>
              <td align="top">
                <input type="text" name="shipToName" size="30"><br />
                <input type="text" name="shipToLine1" size="30"><br />
                <input type="text" name="shipToLine2" size="30"><br />
                <input type="text" name="shipToCity" size="20">
                <input type="text" name="shipToState" size="2">
                <input type="text" name="shipToZip" size="10">
              </td>
            </tr>
          </tbody>
        </table>
      </form>
      <script language="JavaScript">
        shipToChange();
      </script>
    </html>
    

    To try this out on your computer, cut and paste the HTML source code listed above into an empty document and save it with a .html extension. When you are done, open it with your browser and try checking and unchecking the ship-to address. After toggling the checkbox, try typing an address in the ship-to address fields.

    The elements on this page that are referred to in the javascript all have a property name or ID set by the name attribute for <input> elements, and by the ID attribute of the <td> element. This choice let me use the document.getElementById() function to manipulate those elements attributes. When a change is detected in the shipTo element, the shipToChange() script is run to set the style attributes of the ship-to address elements.

    — David

    Sponsored By
    ADVANCED SYSTEMS CONCEPTS

    Business Analytics
    – Practical –
    – Cost Effective –
    – Easy to Deploy –

    SEQUEL FYI

    User Quote:
    “I love SEQUEL FYI because it lets me look at the data any way I need to see it, instantly. This is the easiest tool to manage complex product relationships that I have ever seen.”

    SEQUEL FYI offers outstanding OLAP business intelligence functionality for a fraction of the cost of comparable solutions.

    Read More > View Streaming Video

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags: Tags: mgo_rc, Volume 2, Number 90 -- December 4, 2002

    Sponsored by
    ARCAD Software

    DevSecOps & Peer Review – The Power of Automation

    In today’s fast-paced development environments, security can no longer be an afterthought. This session will explore how DevSecOps brings security into every phase of the DevOps lifecycle—early, consistently, and effectively.

    In this session, you’ll discover:

    • What DevSecOps is and why it matters?
    • Learn how to formalize your security concerns into a repeatable process
    • Discover the power of automation through pull requests, approval workflows, segregation of duties, peer review, and more—ensuring your data and production environments are protected without slowing down delivery.

    Whether you’re just getting started or looking to enhance your practices, this session will provide actionable insights to strengthen your security posture through automation and team alignment to bring consistency to the process.

    Watch Now!

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Get Rid of Old IFS Files Reader Feedback and Insights: One-Row Table Still Needed

    Leave a Reply Cancel reply

MGO Volume: 2 Issue: 90

This Issue Sponsored By

    Table of Contents

    • Reader Feedback and Insights: RPG II
    • Protecting HTML Page Elements with JavaScript and CSS
    • LIKE is Like, Confusing, Man!

    Content archive

    • The Four Hundred
    • Four Hundred Stuff
    • Four Hundred Guru

    Recent Posts

    • Power Systems Grows Nicely In Q3, Looks To Grow For All 2025, Too
    • Beta Of MCP Server Opens Up IBM i For Agentic AI
    • Sundry IBM i And Power Stack Announcements For Your Consideration
    • Please Take The IBM i Marketplace Survey
    • IBM i PTF Guide, Volume 27, Number 43
    • IBM Pulls The Curtain Back A Smidge On Project Bob
    • IBM Just Killed Merlin. Here’s Why
    • Guru: Playing Sounds From An RPG Program
    • A Bit More Insight Into IBM’s “Spyre” AI Accelerator For Power
    • IBM i PTF Guide, Volume 27, Number 42

    Subscribe

    To get news from IT Jungle sent to your inbox every week, subscribe to our newsletter.

    Pages

    • About Us
    • Contact
    • Contributors
    • Four Hundred Monitor
    • IBM i PTF Guide
    • Media Kit
    • Subscribe

    Search

    Copyright © 2025 IT Jungle