All Tracks/review form validation with javascript/
Đang tải...
Hướng dẫn thử thách
1 / 1

Form Validation with JavaScript Review

# --interactive-- ## Validating Forms with JavaScript - **Constraint Validation API**: Certain HTML elements, such as the `textarea` and `input` elements, expose a constraint validation API. This API allows you to assert that the user's provided value for that element passes any HTML-level validation you have written, such as minimum length or pattern matching. - **`checkValidity()` method**: This method returns `true` if the element matches all HTML validation (based on its attributes), and `false` if it fails. :::interactive_editor ```html <form> <label> Email: <input id="email" type="email" required pattern=".+\.com$" placeholder="example@site.com" /> </label> </form> <script> const input = document.getElementById("email"); input.addEventListener("input", (e) => { if (!e.target.checkValidity()) { e.target.setCustomValidity("You must use a .com email."); } else { e.target.setCustomValidity(""); } }); </script> ``` ::: - **`reportValidity()` Method**: This method tells the browser that the `input` is invalid. :::interactive_editor ```html <form> <label> Email: <input id="email2" type="email" required pattern=".+\.com$" placeholder="example@site.com" /> </label> </form> <script> const input = document.getElementById("email2"); input.addEventListener("input", (e) => { if (!e.target.checkValidity()) { e.target.reportValidity(); } }); </script> ``` ::: - **`validity` Property**: This property is used to get the validity state of form controls (like `<input>`, `<select>`, etc.) and provides information about whether the user input meets the constraints defined for that element (e.g., `required` fields, pattern constraints, maximum length, etc.). :::interactive_editor ```html <input id="age" type="number" min="18" placeholder="Enter age (18+)" /> <script> const input = document.getElementById("age"); input.addEventListener("input", (e) => { console.log(e.target.validity); }); </script> ``` ::: - **`patternMismatch` Property**: This will be `true` if the value doesn't match the specified regular expression pattern. ## `preventDefault()` Method - **Definition**: Every event that triggers in the DOM has some sort of default behavior. The click event on a checkbox toggles the state of that checkbox, by default. Pressing the <kbd>Spacebar</kbd> on a focused button activates the button. The `preventDefault()` method on these `Event` objects stops that behavior from happening. :::interactive_editor ```html <form id="form"> <input type="text" placeholder="Try to submit" /> <button type="submit">Submit</button> </form> <p id="status"></p> <script> const form = document.getElementById("form"); const status = document.getElementById("status"); form.addEventListener("submit", (event) => { event.preventDefault(); status.textContent = "Form submission prevented."; }); </script> ``` ::: ## Submitting Forms - **Definition**: There are three ways a form can be submitted. The first is when the user clicks a button in the form which has the `type` attribute set to `submit`. The second is when the user presses the <kbd>Enter</kbd> key on any editable `input` field in the form. The third is through a JavaScript call to the `requestSubmit()` or `submit()` methods of the `form` element. - **`action` Attribute**: The `action` attribute should contain either a URL or a relative path for the current domain. This value determines where the form attempts to send data - if you do not set an `action` attribute, the form will send data to the current page's URL. ```html <form action="https://freecodecamp.org" method="GET"> <input type="number" name="number" placeholder="Enter a number" /> <button type="submit">Submit</button> </form> ``` - **`method` Attribute**: This attribute accepts a standard `HTTP` method, such as `GET` or `POST`, and uses that method when making the request to the action URL. When a method is not set, the form will default to a `GET` request. The data in the form will be URL encoded as `name=value` pairs and appended to the action URL as query parameters. ```html <form action="/data" method="POST"> <input type="number" id="input" placeholder="Enter a number" name="number" /> <button type="submit">Submit</button> </form> ``` - **`enctype` Attribute**: The `form` element accepts an `enctype` attribute, which represents the encoding type to use for the data. This attribute only accepts three values: `application/x-www-form-urlencoded` (which is the default, sending the data as a URL-encoded form body), `text/plain` (which sends the data in plaintext form, in `name=value` pairs separated by new lines), or `multipart/form-data`, which is specifically for handling forms with a file upload.
Nhiệm vụ của bạn
Review the Form Validation with JavaScript topics and concepts.
Vượt qua bài kiểm tra hiện tại để mở khóa bài tiếp theo.
main.sh
UTF-8 • Tab Size: 2Kiểm tra bài:⌘↵
Test Output
Thử thách này không có bài test tự động. Hãy quan sát kết quả trực tiếp ở khung Preview.