Bookmaker Form
Refer to this Image: https://assets.ccbp.in/frontend/content/dynamic-webapps/bookmark-maker-output.gif
When the HTML button element with the id submitBtn is clicked,
When the visit button of a bookmark is clicked the site URL should open in a new tab.
When the HTML input element with id siteNameInput is empty after changing the value inside the input
When the HTML input element with id siteUrlInput is empty after changing the value inside the input
<html>
<head>
</head>
<body>
 
 <!--onsubmit made false to remove unnceccesary reloads --> 
 <form id="bookmarkForm" onsubmit="return false">
 <label for="siteNameInput">site name</label><br>
 <input type="text" id="siteNameInput" name="siteNameInput" value="" /><br>
 <p class="error-message" style="color: red;" id="siteNameErrMsg"></p>
 <label for="siteUrlInput">site URL</label><br>
 <input type="text" id="siteUrlInput" name="siteUrlInput" value="" /> <br>
 <p class="error-message" style="color: red;" id="siteUrlErrMsg"></p>
 <br>
 <button id="submitBtn" onclick="return validateForm()" >submit</button> 
 </form>
 
 <ul id="bookmarksList" class="bookmarks-container"></ul>
 <script type="text/javascript">
 var ul = document.getElementById("bookmarksList");
 // validation and submit
 function validateForm(event) {
 var x = document.getElementById("siteNameInput");
 var y = document.getElementById("siteUrlInput");
 var siteNameError = document.getElementById("siteNameErrMsg")
 siteNameError.innerHTML='';
 var siteUrlError = document.getElementById("siteUrlErrMsg")
 siteUrlError.innerHTML='';
 // checking for site name
 if (x && x.value == "") {
 siteNameError.innerHTML='site name is mandatory'
 }
 //checking for site url
 if(y && y.value == ""){
 siteUrlError.innerHTML='Please provide valid URLs to the siteUrlInput'
 }
 //submitting if both present
 if(x && y && x.value != "" && y.value !=""){
 siteNameError.innerHTML=''
 siteUrlError.innerHTML=''
 var site = {siteName:x.value, siteUrl:y.value}
 console.log(site)
 makeList(site)
 x.value=""
 y.value=""
 return true;
 }
 event.preventDefault()
 return false;
 }
 // to show the updates list in HTML UI
 function makeList(site){
 
 li = document.createElement('li'); // create a new list item
 var x = document.createElement("p");// create a new p item
 var btn = document.createElement("BUTTON"); // visit button for click to visit url
 var div = document.createElement('DIV') // div to wrap site name and button
 x.innerHTML= site.siteName
 x.style.margin="0px"
 x.style.paddingRight = "20px"
 btn.innerHTML="Visit"
 btn.addEventListener("click", function() {
 window.open(site.siteUrl)
 });
 div.style.display="flex"
 div.appendChild(x)
 div.appendChild(btn)
 li.appendChild(div); // append the div to the li
 li.style.marginBottom="8px"
 // append the list item to the ul
 ul.appendChild(li); 
 
 return ;
 }
 
 </script>
</body>
</html> 
Comments