The form element is used to represent a form, there are a number of properties and mehotds the form can have
| retrieve a form | let form = document.getElementById("form1");
// get the first form in the page
let firstForm = document.forms[0];
// get the form with a name of "form2"
let myForm = document.forms["form2"]; |
There are a few ways to submit a form and reset a form
| submit form | // generic submit button
<input type="submit" value="Submit Form">
//custom submit button
<button type="submit">Submit Form</button>
// image button
<input type="image" src="graphic.gif">
// Just before request is sent to server you have a chance to validate the data
let form = document.getElementById("myForm");
form.addEventListener("submit", (event) => {
// prevent form submission
event.preventDefault();
}); |
| reset form | // generic reset button
<input type="reset" value="Reset Form">
// custom reset button
<button type="reset">Reset Form</button>
// Like submit you have a chance before the form is reset
let form = document.getElementById("myForm");
form.addEventListener("reset", (event) => {
event.preventDefault();
}); |
Form fields are accessed in much the same way as other elements on a web page, form fields have a number of common properties like disabled, form, name, readOnly, tabIndex, type and value which can all be accessed
| form fields | let form = document.getElementById("form1");
// get the number of fields
let fieldCount = form.elements.length;
// get the first field in the form
let field1 = form.elements[0];
// get the field named "username"
let field2 = form.elements["username"];
// change the value
field1.value = "Another value";
// disable the field
field1.disabled = true;
|
There are a number of specific form-field events that you can use like blur, change and focus
| focus example | textbox.addEventListener("focus", (event) => {
let target = event.target;
if (target.style.backgroundColor != "red") {
target.style.backgroundColor = "yellow";
}
}); |
There are two ways to represent text boxes in HTML input and textarea, you can use the select() event
| select() example | let textbox = document.forms[0].elements["textbox1"];
textbox.addEventListener("select", (event) => {
console.log('Text selected: ${textbox.value}');
}); |
HTML5 has the capability to check data before being submitted
| validation type | options |
|---|---|
| required fields | required |
| input types | email, url, min, max, minlength, maxlength |
| numeric ranges | number, range, datetime, datetime-local, date, month, week, time |
| input patterns | pattern |
Javascript can check the validity of a form using the checkValidity() method
| validity checks | if(document.forms[0].checkValidity()){
// form is valid, proceed
} else {
// form field is invalid
}
// the below will return true or false, there are more options than these below
input.validity.valueMissing
input.validity.typeMismatch
|
Select boxes use select and option elements and you can use the below to retrieve the element select or option properties
| Select box example | let selectbox = document.forms[0].elements["location"];
let text = selectbox.options[0].text; // option text
let value = selectbox.options[0].value; // option value
// adding an option
let newOption = new Option("Option text", "Option value");
selectbox.add(newOption, undefined); // best solution |
A form can be serialized using the type property of form fields with the name and value, there are a few rules
| serialization examples | switch(field.type) {
case "select-one":
case "select-multiple":
case undefined: // fieldset
case "file": // file input
case "submit": // submit button
case "reset": // reset button
case "button": // custom button
break;
case "radio": // radio button
case "checkbox": //
.............
}
Note: you can then create a serialzed text string to send
|