Textinput Widgetversion added: 1.0
Description: Creates a textinput widget for textinput, textarea or search input
Text Input
Text inputs and textareas are coded with standard HTML elements, then enhanced by jQuery Mobile to make them more attractive and useable on a mobile device. View the data- attribute reference to see all the possible attributes you can add to text inputs.
To collect standard alphanumeric text, use an input
with a type="text"
attribute. Set the for
attribute of the label
to match the id
of the input
so they are semantically associated. It's possible to accessibly hide the label if it's not desired in the page layout, but we require that it is present in the markup for semantic and accessibility reasons.
1
2
|
|
This will produce a basic text input. The default styles set the width of the input to 100% of the parent container and stack the label on a separate line.
Mini version
For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true"
attribute to the element to create a mini version.
1
2
|
|
This will produce an input that is not as tall as the standard version and has a smaller text size.
Clear button option
To add a clear button to any input (like the search input), add the data-clear-btn="true"
attribute. The text for this clear button can be customized via the data-clear-btn-text="clear input"
attribute. Search buttons have the clear button by default and cannot be controlled by this option. Note that this is available for all the input types below except for textareas
.
1
2
|
|
This markup creates a text input with a clear button that becomes visible as soon as a character has been entered.
Field containers
Optionally wrap the text input in a container with the data-role="fieldcontain"
attribute to help visually group it in a longer form.
1
2
3
4
|
|
The text input is now displayed like this:
More text input types
In jQuery Mobile, you can use existing and new HTML5 input types such as password
, email
, tel
, number
, and more. Some type values are rendered differently across browsers. For example, Chrome renders the range
input as a slider. jQuery Mobile standardizes the appearance of range
and search
by dynamically changing their type to text
. You can configure which input types are degraded to text
with the page
plugin's options.
One major advantage of using these more specific input types if that on mobile devices, specialized keyboards that speed data entry are offered in place of the standard text keyboard. Try the following inputs on a mobile device to see which display custom keyboards on various platforms.
Textareas
For multi-line text inputs, use a textarea
element. The framework will auto-grow the height of the textarea to avoid the need for an internal scrollbar.
Set the for
attribute of the label
to match the id
of the textarea
so they are semantically associated, and wrap them in a div
with the data-role="fieldcontain"
attribute to group them.
1
2
3
4
|
|
This will produce a basic textarea with the width set to 100% of the parent container and the label stacked on a separate line. The textarea will grow to fit new lines as you type:
1
2
3
4
|
|
The textarea is displayed like this and will grow to fit new lines as you type:
Calling the textinput plugin
This plugin will auto initialize on any page that contains a textarea or any of the text input types listed above without any need for a data-role
attribute in the markup. However, if needed, you can directly call the textinput
plugin on any selector, just like any jQuery plugin:
1
|
|
Degraded input types
jQuery Mobile degrades several HTML5 input types back to type=text or type=number after adding enhanced controls. For example, inputs with a type of range are enhanced with a custom slider control, and their type is set to number to offer a usable form input alongside that slider. Inputs with a type of search are degraded back to type=text after we add our own themeable search input styling.
The page plugin contains a list of input types that are set to either true which means they'll degrade to type=text, false which means they'll be left alone, or a string such as "number", which means they'll be converted to that type (such as the case of type=range).
You can configure which types are changed via the page plugin's degradeInputs
option, which can be manipulated externally via $.mobile.page.prototype.options.degradeInputs
, which has properties: color, date, datetime, "datetime-local", email, month, number, range, search, tel, time, url, and week. Be sure to configure this inside an event handler bound to the mobileinit
event, so that it applies to the first page as well as subsequent pages that are loaded.
Search Input
Search inputs are a new HTML type that is styled with pill-shaped corners and adds an "x" icon to clear the field once you start typing. Start with an input with a type="search" attribute in your markup.
Set the for
attribute of the label
to match the id
of the input
so they are semantically associated. It's possible to accessibly hide the label if it's not desired in the page layout, but we require that it is present in the markup for semantic and accessibility reasons.
1
2
|
|
This will produce a basic search input. The default styles set the width of the input to 100% of the parent container and stack the label on a separate line.
Mini version
For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true"
attribute to the element to create a mini version.
1
2
|
|
This will produce a search input that is not as tall as the standard version and has a smaller text size.
Field containers
Optionally wrap the search input in a container with the data-role="fieldcontain"
attribute to help visually group it in a longer form.
1
2
3
4
|
|
The search input is now displayed like this:
Theming
The data-theme
attribute can be added to the search input to set the theme to any swatch letter.
Setting the clear button text
The text for the button used to clear the search input of text can be configured for all search inputs by binding to the mobileinit
event and setting the
$.mobile.textinput.prototype.options.clearSearchButtonText
property to a string of your choosing.
Calling the textinput plugin
This plugin will auto-initialize on any page that contains a text input with the type="search"
attribute without any need for a data-role
attribute in the markup. However, if needed, you can directly call the textinput
plugin on a selector, just like any jQuery plugin:
1
|
|
Options
clearBtn
false
This option is also exposed as a data attribute: data-clear-btn="true"
.
Initialize the textinput with the clearBtn
option specified:
1
2
3
|
|
Get or set the clearBtn
option, after initialization:
1
2
3
4
5
|
|
clearBtnText
"clear text"
This option is also exposed as a data attribute: data-clear-btn-text="Clear input"
.
Initialize the textinput with the clearBtnText
option specified:
1
2
3
|
|
Get or set the clearBtnText
option, after initialization:
1
2
3
4
5
|
|
disabled
false
Initialize the textinput with the disabled
option specified:
1
2
3
|
|
Get or set the disabled
option, after initialization:
1
2
3
4
5
|
|
initSelector
input[type='text'], input[type='search'], :jqmData(type='search'), input[type='number'], :jqmData(type='number'), input[type='password'], input[type='email'], input[type='url'], input[type='tel'], textarea, input:not([type])
1
2
3
|
|
mini
false
This option is also exposed as a data attribute: data-mini="true"
.
Initialize the textinput with the mini
option specified:
1
2
3
|
|
Get or set the mini
option, after initialization:
1
2
3
4
5
|
|
preventFocusZoom
true on iOS platforms
This option is also exposed as a data attribute: data-prevent-focus-zoom="true"
.
Initialize the textinput with the preventFocusZoom
option specified:
1
2
3
|
|
Get or set the preventFocusZoom
option, after initialization:
1
2
3
4
5
|
|
theme
null, inherited from parent
Possible values: swatch letter (a-z).
This option is also exposed as a data attribute: data-theme="a"
.
Initialize the textinput with the theme
option specified:
1
2
3
|
|
Get or set the theme
option, after initialization:
1
2
3
4
5
|
|
Methods
disable()Returns: jQuery (plugin only)
- This method does not accept any arguments.
Invoke the disable method:
1
|
|
enable()Returns: jQuery (plugin only)
- This method does not accept any arguments.
Invoke the enable method:
1
|
|
Events
create()Type: textinputcreate
- This method does not accept any arguments.
Note: The ui
object is empty but included for consistency with other events.
Initialize the textinput with the create callback specified:
1
2
3
|
|
Bind an event listener to the textinputcreate event:
1
|
|
Examples:
A basic example of a search input field
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
|
Demo:
A basic example of a search input field
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
|