Numerous types of form field are built into Joomla, with many usefull fields like calendar, color picker, image picker, file upload, file selection etc.:

## Available Fields

    +---------------------+-------------------------------------------------------------------------------------------------------+
    | TYPE                | DESCRIPTION                                                                                           |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | accesslevel         | provides a drop down list of viewing access levels.                                                   |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | cachehandler        | provides a list of available cache handling options.                                                  |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | calendar            | provides a text box for entry of a date. An icon next to the text box                                 |
    |                     | provides a link to a pop-up calendar, which can also be used                                          |
    |                     | to enter the date value.                                                                              |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | captcha             | provides a drop down list of the captcha plugins.                                                     |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | category            | provides a drop down list of categories for an extension.                                             |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | checkbox            | provides a single checkbox to be checked or unchecked                                                 |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | checkboxes          | provides unlimited checkboxes that can be used for multi-select.                                      |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | Chrome Style        | provides a list of template chrome style options grouped by template.                                 |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | color               | provides a color picker when clicking the input box.                                                  |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | Content Language    | Provides a list of content languages.                                                                 |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | Content Type        | Provides a list of content types.                                                                     |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | combo               | provides a combo box field.                                                                           |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | componentlayout     | provides a grouped list of core and template alternate layouts                                        |
    |                     | for a component item.                                                                                 |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | contentlanguage     | provides a list of installed content languages for use in                                             |
    |                     | conjunction with the language switcher plugin.                                                        |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | Database Connection | Provides a list of available database connections,                                                    |
    |                     | optionally limiting to a given list.                                                                  |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | editor              | provides an editor area field.                                                                        |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | editors             | Provides a drop down list of the available WYSIWYG editors.                                           |
    |                     | Since Joomla 2.5 use plugins form field instead.                                                      |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | email               | provides an email field.                                                                              |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | file                |                                                                                                       |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | filelist            | provides a drop down list of files from a specified directory.                                        |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | folderlist          | provides a drop down list of folders from a specified directory.                                      |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | groupedlist         | provides a drop down list of items organized into groups.                                             |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | header tag          | provides a drop down list of the header tags (h1-h6).                                                 |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | helpsite            | provides a drop down list of the help sites for your Joomla installation.                             |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | hidden              | provides a hidden field for saving a form field whose value cannot be altered directly                |
    |                     | by a user in the Administrator (it can be altered in code or by editing the params.ini file).         |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | imagelist           | provides a drop down list of image files in a specified directory.                                    |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | integer             | provides a drop down list of integers between a minimum and maximum.                                  |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | language            | provides a drop down list of the installed languages for the Front-end or Back-end.                   |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | list                | provides a drop down list of custom-defined entries.                                                  |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | media               | provides modal access to the media manager for insertion of images with                               |
    |                     | upload for users with appropriate permissions.                                                        |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | menu                | provides a drop down list of the available menus from your Joomla site.                               |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | Menu Item           | provides a drop down list of the available menu items from your Joomla site.                          |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | Module Layout       | provides a list of alternative layout for a module grouped by core and template.                      |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | Module Order        | Provides a drop down to set the ordering of module in a given position                                |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | Module Position     | provides a text input to set the position of a module.                                                |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | Module Tag          | provides a list of html5 elements (used to wrap a module in).                                         |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | note                | supports a one line text field.                                                                       |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | password            | provides a text box for entry of a password.                                                          |
    |                     | The password characters will be obscured as they are entered.                                         |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | plugins             | provides a list of plugins from a given folder.                                                       |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | radio               | provides radio buttons to select different options.                                                   |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | repeatable          | Allows form fields which can have as many options as the user desires.                                |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | rules               | provides a matrix of group by action options for managing access control. Display depends on context. |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | sessionhandler      | provides a drop down list of session handler options.                                                 |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | spacer              | provides a visual separator between form fields. It is purely a visual aid and no value is stored.    |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | sql                 | provides a drop down list of entries obtained by running a query on the Joomla Database.              |
    |                     | The first results column returned by the query provides the values for the drop down box.             |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | tag                 | provides an entry point for tags (either AJAX or Nested).                                             |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | tel                 | provides an input field for a telephone number.                                                       |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | templatestyle       | provides a drop down list of template styles.                                                         |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | text                | provides a text box for data entry.                                                                   |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | textarea            | provides a text area for entry of multi-line text.                                                    |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | timezone            | provides a drop down list of time zones.                                                              |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | URL                 | provides a URL text input field.                                                                      |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | user                | provides a modal list of users.                                                                       |
    +---------------------+-------------------------------------------------------------------------------------------------------+
    | usergroup           | provides a drop down list of user groups.                                                             |
    +---------------------+-------------------------------------------------------------------------------------------------------+

The complete list with examples can be found at [http://docs.joomla.org/Form_field][1].

## Example usage

This example XML file with (almost) all available fields might be useful in order to see all available fields and how they look:

    <?xml version="1.0" encoding="UTF-8"?>
    <extension version="2.5" type="module" client="site" method="upgrade">
       <name>All fields Demo</name>
       <description>XML file containing all available form fields in Joomla</description>
       <files>
          <filename module="mod_AllFields">mod_AllFields.php</filename>
       </files>
       <config>
          <fields name="params">
             <fieldset name="basic">
                <field name="access" type="accesslevel" label="JFIELD_ACCESS_LABEL" description="JFIELD_ACCESS_DESC" class="span12 small" />
                <field name="cache_handler" type="cachehandler" default="" label="Cache Handler Field type" description="COM_CONFIG_FIELD_CACHE_HANDLER_DESC" filter="word" />
                <field name="mycalendar" type="calendar" default="5-10-2008" label="Select a date" description="" format="%d-%m-%Y" />
                <field name="captcha" type="plugins" folder="captcha" label="Captcha Selection field" description="COM_CONTACT_FIELD_CAPTCHA_DESC" default="" filter="cmd">
                   <option value="">JOPTION_USE_DEFAULT</option>
                   <option value="0">JOPTION_DO_NOT_USE</option>
                </field>
                <field name="mycategory" type="category" extension="com_content" label="Select a category" description="" />
                <field name="show_title" type="checkbox" label="Show title" description="Show the title of the item" value="1" />
                <field name="toppings" type="checkboxes">
                   <option value="anch">Anchovies</option>
                   <option value="chor">Chorizo</option>
                   <option value="on">Onions</option>
                   <option value="mush">Mushrooms</option>
                </field>
                <field name="style" type="chromestyle" label="COM_MODULES_FIELD_MODULE_STYLE_LABEL" description="COM_MODULES_FIELD_MODULE_STYLE_DESC" />
                <field name="backgroundcolor" type="color" default="#eee" label="Color selector field" description="TPL_BEEZ3_FIELD_HEADER_BACKGROUND_COLOR_DESC" />
                <field name="types" type="contenttype" label="Tags field type" description="COM_TAGS_FIELD_TYPE_DESC" multiple="true" />
                <field name="myeditbox" type="combobox" label="MyEditBox" description="myeditbox_Desc" size="7" />
                <field name="mylayout" type="componentlayout" extension="com_content" view="article" label="Component Layout field" useglobal="true" description="JFIELD_ALT_COMPONENT_LAYOUT" />
                <field name="language" type="contentlanguage" label="JFIELD_LANGUAGE_LABEL" description="COM_CATEGORIES_FIELD_LANGUAGE_DESC" class="span12 small">
                   <option value="*">JALL</option>
                </field>
                <field name="dbtype" type="databaseconnection" label="DB type field" description="COM_CONFIG_FIELD_DATABASE_TYPE_DESC" supported="mysql,mysqli,postgresql,sqlsrv,sqlazure" filter="string" />
                <field name="test1" label="Test Field" type="editor" width="300" filter="safehtml" />
                <field name="email" type="email" label="JGLOBAL_EMAIL" description="COM_ADMIN_USER_FIELD_EMAIL_DESC" required="true" size="30" class="inputbox" validate="email" />
                <field name="myfilevalue" type="file" label="Enter some text" description="Choose an image from your computer with maximum 100KB" size="10" accept="image/*" />
                <field name="myfile" type="filelist" default="" label="Select a file" description="" directory="administrator" filter="" exclude="" stripext="" />
                <field name="myfolder" type="folderlist" default="" label="Select a folder" directory="administrator" filter="" exclude="" stripext="" />
                <field name="mylistvalue" type="groupedlist" default="" label="Select an option" description="">
                   <group label="Group 1">
                      <option value="0">Option 1</option>
                      <option value="1">Option 2</option>
                   </group>
                   <group label="Group 2">
                      <option value="3">Option 3</option>
                      <option value="4">Option 4</option>
                   </group>
                   <option value="5">Option 5</option>
                   <option value="6">Option 6</option>
                </field>
                <field name="header_tag" type="headertag" label="COM_MODULES_FIELD_HEADER_TAG_LABEL" description="COM_MODULES_FIELD_HEADER_TAG_DESC" default="h3" />
                <field name="myhelpsite" type="helpsite" default="" label="Select a help site" description="" />
                <field name="mysecretvariable" type="hidden" default="" />
                <field name="myimage" type="imagelist" default="" label="Select an image" description="" directory="" exclude="" stripext="" />
                <field name="myintegervalue" type="integer" default="Some integer" label="Choose an integer" description="" first="1" last="10" step="1" />
                <field name="mylanguage" type="language" client="site" default="en-GB" label="Select a language" description="" />
                <field name="mylistvalue" type="list" default="" label="Select an option" description="">
                   <option value="0">Option 1</option>
                   <option value="1">Option 2</option>
                </field>
                <field name="myimage" type="media" directory="stories" />
                <field name="mymenu" type="menu" default="mainmenu" label="Select a menu" description="Select a menu" />
                <field name="mymenuitem" type="menuitem" default="45" label="Select a menu item" description="Select a menu item" />
                <field name="mymodulelayout" type="modulelayout" label="JFIELD_ALT_LAYOUT_LABEL" description="JFIELD_ALT_MODULE_LAYOUT_DESC" />
                <field name="ordering" type="moduleorder" label="JFIELD_ORDERING_LABEL" description="JFIELD_ORDERING_DESC" />
                <field name="position" type="moduleposition" description="COM_MODULES_FIELD_POSITION_DESC" label="COM_MODULES_FIELD_POSITION_LABEL" default="" maxlength="50" />
                <field name="module_tag" type="moduletag" label="COM_MODULES_FIELD_MODULE_TAG_LABEL" description="COM_MODULES_FIELD_MODULE_TAG_DESC" default="div" />
                <field name="note31" type="note" class="alert" close="true" label="Note Field" description="Note field description here." />
                <field name="mypassword" type="password" default="secret" label="Enter a password" description="" size="5" />
                <field name="editor" type="plugins" folder="editors" description="COM_USERS_USER_FIELD_EDITOR_DESC" label="User editor field type">
                   <option value="">JOPTION_USE_DEFAULT</option>
                </field>
                <field name="myradiovalue" type="radio" default="0" label="Select an option" description="">
                   <option value="0">1</option>
                   <option value="1">2</option>
                </field>
                <field name="session_handler" type="sessionhandler" default="none" label="Session handler field type" description="COM_CONFIG_FIELD_SESSION_HANDLER_DESC" required="true" filter="word" />
                <field type="spacer" name="myspacer" label="Spacer field type" />
                <field name="title" type="sql" default="10" label="sql Field type" query="SELECT id AS value, title FROM #__content" />
                <field name="tags" type="tag" label="JTAG" description="JTAG_DESC" mode="ajax" class="inputbox span12 small" multiple="true" />
                <field name="admin_style" type="templatestyle" client="administrator" description="Template style field type" label="Template style field type">
                   <option value="">JOPTION_USE_DEFAULT</option>
                </field>
                <field name="mytextvalue" type="text" default="Some text" label="Enter some text" description="" size="10" />
                <field name="mytextarea" type="textarea" default="default" label="Enter some text" description="" rows="10" cols="5" />
                <field name="mytimezone" type="timezone" default="-10" label="Select a timezone" description="" />
                <field name="mytextvalue" type="url" default="http://www.example.com" label="Enter a URL" description="" size="10" />
                <field name="modified_user_id" type="user" label="JGLOBAL_FIELD_MODIFIED_BY_LABEL" class="readonly" readonly="true" filter="unset" />
                <field name="guest_usergroup" type="usergroup" label="Guest usergroup field type" description="COM_USERS_CONFIG_FIELD_GUEST_USER_GROUP_DESC" multiple="true" />
             </fieldset>
          </fields>
       </config>
    </extension>

*Note that some of the fields are only available in Joomla 3.0 (or 3.1, in the case of `contentType`, `note` and `tag`).*

## Custom form field types

An extension can define its own form field types, which can then be used in its own forms or forms created by another extension. See [Creating a custom form field type][2] (Joomla! Documentation) for instructions.


  [1]: http://docs.joomla.org/Form_field
  [2]: http://docs.joomla.org/Creating_a_custom_form_field_type