# HTML - forms ## Lesson Objectives 1. Explain what a form is 1. Use a form tag to set up an interactive space 1. Use an input element to give the user a place to enter data 1. Use a textarea element to give the user a place to enter large text blocks 1. Use a select element, in conjunction with option elements to create a dropdown 1. Use a label to create a clickable space which will also affect a specified input ## Explain what a form is A form is a set of fields with which users interact. Data is often gathered from these fields. ## Use a form tag to set up an interactive space Container tag for a form. Has the following attributes, which we don't need to use right now 1. action 1. method ## Use an input element to give the user a place to enter data Input tags are the most basic and most common way to enter small chunks of data. They have the following attributes: - name - used by the server to create a property with the given name - value - set an initial value for the input - type - button - Defines a clickable button (mostly used with a JavaScript to activate a script) - checkbox - Defines a checkbox - color - Defines a color picker - date - Defines a date control (year, month and day (no time)) - datetime-local - Defines a date and time control (year, month, day, hour, minute, second, and fraction of a second (no time zone) - email - Defines a field for an e-mail address - file - Defines a file-select field and a "Browse..." button (for file uploads) - hidden - Defines a hidden input field - used on the back end - image - Defines an image as the submit button - month - Defines a month and year control (no time zone) - number - Defines a field for entering a number - password - Defines a password field (characters are masked) - radio - Defines a radio button - A set of radio buttons must all have the same name attribute - range - Defines a control for entering a number whose exact value is not important (like a slider control) - reset - Defines a reset button (resets all form values to default values) - search - Defines a text field for entering a search string - submit - Defines a submit button - tel - Defines a field for entering a telephone number - text - Default. Defines a single-line text field (default width is 20 characters) - time - Defines a control for entering a time (no time zone) - url - Defines a field for entering a URL - week - Defines a week and year control (no time zone) - checked - set a check box to be checked initially - for a collection of radio buttons, set which one is selected initially - disabled - prevent a user from interacting with an input - maxlength - set the maximum length of an inputs value - placeholder - some placeholder text - used to prompt the user or explain the input's purpose ## Use a textarea element to give the user a place to enter large text blocks Contains large chunks of text ## Use a select element, in conjunction with option elements to create a dropdown - `select` element - tag containing many `option` elements - set the `name` attribute here - `option` element - `selected` attribute sets which option is initially selected from the dropdown - `value` attribute will be the value of the `select` dropdown as a whole. - Can have content which is different from `value` attribute - allows you to be more verbose for the user ## Use a label to create a clickable space which will also affect a specified input - Creates an interactive element for users to click on - This will affect a checkbox/radio button with an `id` that matches the label's `for` attribute value - Can do some neat things with CSS, labels, and form elements (e.g. CSS only carousels) - https://css-tricks.com/the-checkbox-hack/