Java Script 8th Class
Java Script 8th Class
JavaScript Form
Form basics
The <form> element has two important attributes: action and method.
action specifies a URL that processes the form submission. In this example,
the action is the /signup URL.
method specifies the HTTP method to submit the form with. The method is
either post or get.
Typically, you use the get method when you want to retrieve data from
the server and the post method when you want to change something on
the server.
Referencing forms
To reference the <form> element, you can use DOM selecting methods
such as getElementById():
document.forms
Code language: JavaScript (javascript)
document.forms[0]
Code language: CSS (css)
Submitting a form
Typically, a form has a submit button. When you click it, the browser
sends form data to the server. To create a submit button, you
use <input> or <button> element with the type submit:
Or
<button type="submit">Subscribe</button>
Code language: HTML, XML (xml)
If the submit button has focus and you press the Enter key, the browser
also submits the form data.
When you submit the form, the submit event is fired before the request
is sent to the server. This gives you a chance to validate the form data.
If the form data is invalid, you can stop submitting the form.
To submit the form in JavaScript, you call the submit() method of the
form object:
form.submit();
Code language: CSS (css)
Note that the form.submit() does not fire the submit event. Therefore, you
should always validate the form before calling this method.
Also, you can use the elements property of the form object.
The form.elements property stores a collection of the form elements.
To access the elements of the form, you get the form element first:
form.elements[0]; // by index
form.elements['name']; // by name
form.elements['name']; // by id (name & id are the same
in this case)
Code language: JavaScript (javascript)
form.elements[1]; // by index
form.elements['email']; // by name
form.elements['email']; // by id
Code language: JavaScript (javascript)
After accessing a form field, you can use the value property to access its
value, for example:
<!DOCTYPE html>
<html lang="en">
<head>
<title>JavaScript Form Demo</title>
<meta name="viewport" content="width=device-
width, initial-scale=1.0" />
<link rel="stylesheet" href="css/style.css"
/>
</head>
<body>
<div class="container">
<form action="signup.html"
method="post" id="signup">
<h1>Sign Up</h1>
<div class="field">
<label
for="name">Name:</label>
<input type="text" id="name"
name="name" placeholder="Enter your fullname" />
<small></small>
</div>
<div class="field">
<label
for="email">Email:</label>
<input type="text"
id="email" name="email" placeholder="Enter your email
address" />
<small></small>
</div>
<div class="field">
<button type="submit"
class="full">Subscribe</button>
</div>
</form>
</div>
<script src="js/app.js"></script>
</body>
</html>
Code language: HTML, XML (xml)
The HTML document references the style.css and app.js files. It uses
the <small> element to display an error message in case
the <input> element has invalid data.
function showSuccess(input) {
return showMessage(input, "", true);
}
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]
+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-
9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-
Z]{2,}))$/;
How it works.
<div class="field">
<label for="name">Name:</label>
<input type="text" id="name" name="name"
placeholder="Enter your fullname" />
<small></small>
</div>
Code language: HTML, XML (xml)
If the name’s value is blank, you need to get its parent first which is
the <div> with the class “field”.
input.parentNode
Code language: CSS (css)
msg.innerText = message;
After that, we change the CSS class of the input field based on the
value of the type parameter. If the type is true, we change the class of
the input to success. Otherwise, we change the class to error.
The the showError() and showSuccess() functions call the showMessage() function.
The showError() function always returns false whereas
the showSuccess() function always returns true. Also,
the showSuccess() function sets the error message to an empty string.
function showSuccess(input) {
return showMessage(input, "", true);
}
Code language: JavaScript (javascript)
The hasValue() function checks if an input element has a value or not and
show an error message using the showError() or showSuccess() function
accordingly:
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]
+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-
9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-
Z]{2,}))$/;
The validateEmail() function calls the hasValue() function to check if the field
value is empty. If the input field is empty, it shows the requiredMsg.
First, select the signup form by its id using the querySelector() method:
Summary
JavaScript - Animation
You can use JavaScript to create a complex animation having, but not limited to,
the following elements −
Fireworks
Fade Effect
Roll-in or Roll-out
Page-in or Page-out
Object movements
You might be interested in existing JavaScript based animation
library: Script.Aculo.us.
This tutorial provides a basic understanding of how to use JavaScript to create
an animation.
JavaScript can be used to move a number of DOM elements (<img />, <div> or
any other HTML element) around the page according to some sort of pattern
determined by a logical equation or function.
JavaScript provides the following two functions to be frequently used in
animation programs.
setTimeout( function, duration) − This function
calls function after duration milliseconds from now.
setInterval(function, duration) − This function calls function after
every duration milliseconds.
clearTimeout(setTimeout_variable) − This function calls clears any timer
set by the setTimeout() functions.
JavaScript can also set a number of attributes of a DOM object including its
position on the screen. You can set top and left attribute of an object to position
it anywhere on the screen. Here is its syntax.
// Set distance from left edge of the screen.
object.style.left = distance in pixels or points;
or
Manual Animation
So let's implement one simple animation using DOM object properties and
JavaScript functions as follows. The following list contains different DOM
methods.
We are using the JavaScript function getElementById() to get a DOM object
and then assigning it to a global variable imgObj.
We have defined an initialization function init() to initialize imgObj where
we have set its position and left attributes.
We are calling initialization function at the time of window load.
Finally, we are calling moveRight() function to increase the left distance by
10 pixels. You could also set it to a negative value to move it to the left
side.
Example
<html>
<head>
<title>JavaScript Animation</title>
<script type = "text/javascript">
<!--
var imgObj = null;
function init() {
imgObj = document.getElementById('myImage');
imgObj.style.position= 'relative';
imgObj.style.left = '0px';
}
function moveRight() {
imgObj.style.left = parseInt(imgObj.style.left) + 10
+ 'px';
}
window.onload = init;
//-->
</script>
</head>
<body>
<form>
<img id = "myImage" src = "/images/html.gif" />
<p>Click button below to move the image to right</p>
<input type = "button" value = "Click Me" onclick =
"moveRight();" />
</form>
</body>
</html>
Automated Animation
In the above example, we saw how an image moves to right with every click. We
can automate this process by using the JavaScript function setTimeout() as
follows −
Here we have added more methods. So let's see what is new here −
The moveRight() function is calling setTimeout() function to set the
position of imgObj.
We have added a new function stop() to clear the timer set
by setTimeout() function and to set the object at its initial position.
Example
<html>
<head>
<title>JavaScript Animation</title>
<script type = "text/javascript">
<!--
var imgObj = null;
var animate ;
function init() {
imgObj = document.getElementById('myImage');
imgObj.style.position= 'relative';
imgObj.style.left = '0px';
}
function moveRight() {
imgObj.style.left = parseInt(imgObj.style.left) + 10
+ 'px';
animate = setTimeout(moveRight,20); // call
moveRight in 20msec
}
function stop() {
clearTimeout(animate);
imgObj.style.left = '0px';
}
window.onload = init;
//-->
</script>
</head>
<body>
<form>
<img id = "myImage" src = "/images/html.gif" />
<p>Click the buttons below to handle animation</p>
<input type = "button" value = "Start" onclick =
"moveRight();" />
<input type = "button" value = "Stop" onclick = "stop();"
/>
</form>
</body>
</html>
<head>
<title>Rollover with a Mouse Events</title>
<body>
<p>Move your mouse over the image to see the result</p>
However, it is likely that some users will type the wrong password. To help them
see the password that they’re currently entering, you can add a button that allows
them to toggle the visibility of the password.
First, create an <input> element with the type of password and an icon that
allows users to click it to toggle the visibility of the password.
Second, bind an event handler to the click event of the icon. If the icon is
clicked, toggle the type attribute of the password field
between text and password. The input with the type text will show the actual
password.
Third, change the icon to make it more user-friendly. This step is optional.
To make it easy, we’ll use two icons from the Bootstrap icon for toggling the
visibility of the password.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-
scale=1.0" />
<title>Toggle Password Visibility</title>
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap-
icons@1.3.0/font/bootstrap-icons.css" />
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<div class="container">
<h1>Sign In</h1>
<form method="post">
<p>
<label for="username">Username:</label>
<input type="text" name="username" id="username">
</p>
<p>
<label for="password">Password:</label>
<input type="password" name="password" id="password"
/>
<i class="bi bi-eye-slash" id="togglePassword"></i>
</p>
<button type="submit" id="submit" class="submit">Log
In</button>
</form>
</div>
<script src="js/app.js"></script>
</body>
</html>
Code language: HTML, XML (xml)
The HTML page contains an input element with the type password and
an <i> element with the CSS classes provided by Bootstrap.
The Bootstrap allows you to use the class bi-eye of the <i> element to show the eye
icon. To change the icon from eye to eye slash, you just need to change the class
of the <i> element to bi-eye-slash
To place the icon inside the password input, you can use the negative margin for
the <i> element as follows:
form i {
margin-left: -30px;
cursor: pointer;
}
Code language: CSS (css)
First, select the toggle password icon and the password input field using
the querySelector() method:
const togglePassword =
document.querySelector('#togglePassword');
const password = document.querySelector('#password');
Code language: JavaScript (javascript)
Then, attach an event listener to the togglePassword icon and toggle the type attribute
of the password field as well as the class of the icon: