I am have made dropdown using bootstarap. I have added onlcick funtions in my anchor tags in dropdown. I just want make my text box readonly if one of the link is clicked on. I have used js to make text boxes read only. Please Help me to solve my problem. Below is my code:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html> <html> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <title>Mole Calculator | Chemistry Calculator</title> </head> <body> <nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-black"> <div class="container-fluid"> <a class="navbar-brand" href="#"><h4> <b>Chemistry Calculator</b> </h4></a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav text-uppercase"> <li class="nav-item"><a class="nav-link active" aria-current="page" href="/Chemistry-Calculator/">Home</a></li> <li class="nav-item"><a class="nav-link active" aria-current="page" href="/Chemistry-Calculator/about">About</a></li> </ul> </div> </div> </nav> <div class="container" style="padding-top: 5%;"> <div class="card px-4 py-5" style="width: 650px;"> <div class="card-block"> <form action="/Chemistry-Calculator/Number-Of-Moles"> <div class="mb-3"> <label for="givenMass" class="form-label">Given Mass of Substance</label> <input type="text" class="form-control" id="givenMass" aria-describedby="emailHelp" name="givenMass" value="${givenMass}" style="width: 600px"> </div> <div class="mb-3"> <label for="molarMass" class="form-label">Molar Mass</label> <input type="text" class="form-control" id="molarMass" name="molarMass" value="${molarMass}" style="width: 600px"> </div> <div class="mb-3"> <label for="molarMass" class="form-label">Moles</label> <input type="text" class="form-control" id="molarMass" name="moles" value="${moles}" style="width: 600px"> </div> <input class="btn btn-outline-success" type="submit" value="Calculate"> <div class="btn-group"> <button type="button" class="btn btn-success dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Choose what to calculate </button> <ul class="dropdown-menu"> <li><a class="dropdown-item" onclick="readonlyForMoles()" href="/Chemistry-Calculator/Mole-Calculator">Calculate Moles</a></li> <li><a class="dropdown-item" onclick="readonlyForMolarMass()" href="/Chemistry-Calculator/Mole-Calculator">Calculate Molar Mass</a></li> <li><a class="dropdown-item" onclick="readonlyForGivenMass()" href="/Chemistry-Calculator/Mole-Calculator">Calculate Given mass</a></li> </ul> </div> </form> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> <script type="text/javascript" src="../javascript/script.js"></script> </body> </html>
My Java Script File:
function readonlyForGivenMass() { var x = document.getElementById("givenMass").readOnly; } function readonlyForMolarMass() { var x = document.getElementById("molarMass").readOnly; } function readonlyForMoles() { var x = document.getElementById("moles").readOnly; }
Actually this is small part of java project. Hence I have used jsp and jstl. My file structure:
Advertisement
Answer
you are just assigning but declaring it, just need to make it true, so given id would be readonly, please find below snippets
<!DOCTYPE html> <html> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <title>Mole Calculator | Chemistry Calculator</title> </head> <body> <nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-black"> <div class="container-fluid"> <a class="navbar-brand" href="#"><h4> <b>Chemistry Calculator</b> </h4></a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav text-uppercase"> <li class="nav-item"><a class="nav-link active" aria-current="page" href="/Chemistry-Calculator/">Home</a></li> <li class="nav-item"><a class="nav-link active" aria-current="page" href="/Chemistry-Calculator/about">About</a></li> </ul> </div> </div> </nav> <div class="container" style="padding-top: 5%;"> <div class="card px-4 py-5" style="width: 650px;"> <div class="card-block"> <form action="/Chemistry-Calculator/Number-Of-Moles"> <div class="mb-3"> <label for="givenMass" class="form-label">Given Mass of Substance</label> <input type="text" class="form-control" id="givenMass" aria-describedby="emailHelp" name="givenMass" value="${givenMass}" style="width: 600px"> </div> <div class="mb-3"> <label for="molarMass" class="form-label">Molar Mass</label> <input type="text" class="form-control" id="molarMass" name="molarMass" value="${molarMass}" style="width: 600px"> </div> <div class="mb-3"> <label for="moles" class="form-label">Moles</label> <input type="text" class="form-control" id="moles" name="moles" value="${moles}" style="width: 600px"> </div> <input class="btn btn-outline-success" type="submit" value="Calculate"> <div class="btn-group"> <button type="button" class="btn btn-success dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Choose what to calculate </button> <ul class="dropdown-menu"> <li><a class="dropdown-item" onclick="readonlyForMoles()" href="/Chemistry-Calculator/Mole-Calculator">Calculate Moles</a></li> <li><a class="dropdown-item" onclick="readonlyForMolarMass()" href="/Chemistry-Calculator/Mole-Calculator">Calculate Molar Mass</a></li> <li><a class="dropdown-item" onclick="readonlyForGivenMass()" href="/Chemistry-Calculator/Mole-Calculator">Calculate Given mass</a></li> </ul> </div> </form> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> <script type="text/javascript" src="../javascript/script.js"></script> <script> function readonlyForGivenMass() { document.getElementById("givenMass").readOnly = true; document.getElementById("molarMass").readOnly = false; document.getElementById("moles").readOnly = false; } function readonlyForMolarMass() { document.getElementById("givenMass").readOnly = false; document.getElementById("molarMass").readOnly = true; document.getElementById("moles").readOnly = false; } function readonlyForMoles() { document.getElementById("givenMass").readOnly = false; document.getElementById("molarMass").readOnly = false; document.getElementById("moles").readOnly = true; } </script> </body> </html>