Виджет Textinputверсия добавлена: 1.0
Описание: Создаёт виджет textinput для текстовых полей, области ввода текста или поискового поля
Описание: Создаёт виджет textinput для текстовых полей, области ввода текста или поискового поля
Текстовые поля и области ввода многострочного текста кодируются с помощью стандартных HTML-элементов, а затем улучшаются jQuery Mobile, чтобы сделать их более привлекательными и удобными для использования на мобильном устройстве.
Для сбора стандартного текстового алфавитно-цифрового ввода используйте элемент input с атрибутом type="text". Установите атрибут for элемента label в соответствие с атрибутом id элемента input, чтобы они были семантически связаны. Можно скрывать метку, если она не нужна в макете страницы, но для семантических и доступных целей мы требуем ее наличия в разметке.
Виджет textinput использует фреймворк CSS jQuery Mobile для настройки своего внешнего вида. Если требуется специфическое стилирование textinput, следующие имена CSS-классов могут быть использованы для переопределения или в качестве ключей для опции classes опции:
ui-textinput: Внешний контейнер для textinput. Классы ui-textinput-search или ui-textinput-text будут применены, если у textinput есть type='search' или нет соответственно. Класс ui-textinput-clear-button будет применён, когда опция clearBtn имеет значение true. Класс ui-textinput-autogrow будет применён, когда опция autogrow имеет значение true. ui-textinput-search-icon: Класс иконки поиска, когда тип textinput — поиск <label for="basic">Text Input:</label> <input type="text" name="name" id="basic" value="">
Это создаст базовое текстовое поле ввода. По умолчанию стили устанавливают ширину поля ввода в 100% от родительского контейнера и выравнивают метку на отдельной строке.
Для более компактной версии, полезной в панелях инструментов и узких местах, добавьте атрибут data-mini="true" к элементу для создания мини-версии.
<label for="basic">Text Input:</label> <input type="text" name="name" id="basic" value="" data-mini="true">
Это создаст поле ввода, которое не будет таким высоким, как стандартная версия, и будет иметь меньший размер текста.
Расширение clearButton предоставляет опцию clearBtn.
Чтобы добавить кнопку очистки к любому полю ввода (например, полю поиска), добавьте атрибут data-clear-btn="true". Текст этой кнопки очистки можно настроить с помощью атрибута data-clear-btn-text="clear input". Кнопки поиска имеют кнопку очистки по умолчанию и не могут быть управляемы этой опцией. Обратите внимание, что эта опция доступна для всех типов полей ввода ниже, кроме тех, которые закодированы с помощью элементов textarea.
<label for="clear-demo">Text Input:</label> <input type="text" name="clear" id="clear-demo" value="" data-clear-btn="true">
Эта разметка создает текстовое поле ввода с кнопкой очистки, которая становится видимой, как только введено хотя бы одно символов.
Можно обернуть текстовое поле в контейнер с классом ui-field-contain, чтобы визуально сгруппировать его в более длинной форме.
Примечание: Атрибут data- data-role="fieldcontain" устарел с версии jQuery Mobile 1.4.0 и будет удален в версии 1.5.0. Используйте класс ui-field-contain вместо него.
<div class="ui-field-contain"> <label for="name">Text Input:</label> <input type="text" name="name" id="name" value=""> </div>
Теперь текстовое поле отображается следующим образом:
В jQuery Mobile можно использовать существующие и новые HTML5 типы ввода, такие как password, email, tel, number и другие. Некоторые значения типов отображаются по-разному в разных браузерах. Например, Chrome отображает поле ввода типа range как ползунок. jQuery Mobile стандартизирует отображение range и search путем динамического изменения их типа на text. Можно настроить, какие типы ввода будут понижены до text с помощью опций плагина page.
Одно из основных преимуществ использования более специфичных типов ввода заключается в том, что на мобильных устройствах предлагаются специализированные клавиатуры, которые ускоряют ввод данных вместо стандартной текстовой клавиатуры. Попробуйте следующие поля ввода на мобильном устройстве, чтобы увидеть, какие клавиатуры отображаются на различных платформах.
Виджеты textinput с стилизацией jQuery Mobile могут быть размещены вне страниц jQuery Mobile. Для этого укажите тип ввода как type="text", добавьте атрибут data-type="search", и вручную вызовите плагин textinput на элементе.
Разметка:
<input id="the-search-input" type="text" data-type="search">
Скрипт:
$( function() {
$( "#the-search-input" ).textinput();
}); Для многострочных полей ввода используйте элемент textarea. Расширение autogrow предоставляет функциональность для автоматического изменения высоты области ввода многострочного текста, чтобы избежать необходимости в внутренней полосе прокрутки.
Установите атрибут for элемента label в соответствие с атрибутом id элемента textarea, чтобы они были семантически связаны, и оберните их в элемент div с классом ui-field-contain для группировки.
Примечание: Атрибут data- data-role="fieldcontain" устарел с версии jQuery Mobile 1.4.0 и будет удален в версии 1.5.0. Используйте класс ui-field-contain вместо него.
<label for="textarea-a">Textarea:</label> <textarea name="textarea" id="textarea-a"> I'm a basic textarea. If this is pre-populated with content, the height will be automatically adjusted to fit without needing to scroll. That is a pretty handy usability feature. </textarea>
Это создаст базовую область ввода многострочного текста с шириной, установленной в 100% от родительского контейнера, и меткой, расположенной на отдельной строке. Область ввода многострочного текста будет расширяться, чтобы вместить новые строки по мере ввода:
<div class="ui-field-contain"> <label for="textarea">Textarea:</label> <textarea name="textarea" id="textarea"></textarea> </div>
Область ввода многострочного текста отображается следующим образом и будет расширяться для размещения новых строк по мере набора текста:
Этот плагин будет автоматически инициализирован на любой странице, содержащей область ввода многострочного текста или любой из перечисленных выше типов текстового ввода, без необходимости атрибута data-role в разметке. Однако, при необходимости, вы можете напрямую вызвать плагин textinput на любом селекторе, как любой плагин jQuery:
$( "input" ).textinput();
Расположение карты понижения типов ввода в плагине страницы устарело, начиная с версии 1.4.0. Начиная с версии 1.5.0, функциональность понижения типов ввода будет реализована модулем degradeInputs.
jQuery Mobile понижает несколько HTML5 типов ввода до типа=text или типа=number после добавления расширенных элементов управления. Например, поля ввода с типом диапазона улучшаются с помощью пользовательского элемента управления ползунком, а их тип устанавливается в числовой для обеспечения функционального поля ввода наряду с этим ползунком. Поля ввода с типом поиска понижаются до типа=text после добавления собственного стилизованного поля ввода поиска.
Модуль degradeInputs содержит список типов ввода, которые устанавливаются либо в true (что означает, что они будут понижены до типа=text), либо в false (что означает, что они будут оставлены без изменений), или в строку, например, "number", что означает, что они будут преобразованы в этот тип (например, в случае типа=диапазон).
Можно настроить, какие типы изменять с помощью $.mobile.degradeInputs, который имеет свойства: цвет, дата, дата-время, "дата-время-локальное", электронная почта, месяц, число, диапазон, поиск, телефон, время, URL и неделя. Убедитесь, что вы настроили это внутри обработчика событий, связанного с событием mobileinit , чтобы он применялся к первой странице, а также к последующим страницам, которые загружаются.
Поля ввода поиска — это новый тип HTML, стилизованный с круглыми углами в форме таблетки и иконкой «x» для очистки поля после начала ввода. Начните с поля ввода с атрибутом type="search" в вашей разметке.
Установите атрибут for элемента label в соответствие с атрибутом id элемента input, чтобы они были семантически связаны. Можно скрывать метку, если она не нужна в макете страницы, но для семантических и доступных целей мы требуем ее наличия в разметке.
<label for="search-basic">Search Input:</label> <input type="search" name="search" id="search-basic" value="">
Это создаст базовое поле ввода поиска. По умолчанию стили устанавливают ширину поля ввода в 100% от родительского контейнера и выравнивают метку на отдельной строке.
Для более компактной версии, полезной в панелях инструментов и узких местах, добавьте атрибут data-mini="true" к элементу для создания мини-версии.
<label for="search-mini">Search Input:</label> <input type="search" name="search-mini" id="search-mini" value="" data-mini="true">
Это создаст поле ввода поиска, которое не будет таким высоким, как стандартная версия, и будет иметь меньший размер текста.
Можно обернуть поле ввода поиска в контейнер с классом ui-field-contain, чтобы визуально сгруппировать его в более длинной форме.
Примечание: Атрибут data- data-role="fieldcontain" устарел с версии jQuery Mobile 1.4.0 и будет удален в версии 1.5.0. Используйте класс ui-field-contain вместо него.
<div class="ui-field-contain"> <label for="search-2">Search Input:</label> <input type="search" name="search-2" id="search-2" value=""> </div>
Поле ввода поиска отображается следующим образом:
Атрибут data-theme может быть добавлен в поле ввода поиска, чтобы установить тему на любой шрифт.
Текст кнопки, используемой для очистки поля ввода поиска, можно настроить для всех полей ввода поиска, привязавшись к событию mobileinit и установив свойство $.mobile.textinput.prototype.options.clearBtnText на выбранную строку.
Эта опция предоставляется расширением clearButton.
Этот плагин будет автоматически инициализирован на любой странице, содержащей поле ввода с атрибутом type="search", без необходимости атрибута data-role в разметке. Однако, при необходимости, можно напрямую вызвать плагин textinput на селекторе, как любой плагин jQuery:
$( ".mySearchInput" ).textinput();
Вы можете улучшить время загрузки страницы, предоставив разметку, которую виджет textinput обычно создаёт во время своей инициализации.
Предоставив эту разметку самостоятельно и указав это, установив атрибут data-enhanced="true", вы инструктируете виджет textinput пропустить эти манипуляции DOM во время создания экземпляра и предположить, что необходимая структура DOM уже присутствует.
Когда вы предоставляете такую предварительно отрисованную разметку, вы также должны установить все классы, которые обычно устанавливает фреймворк, и вы также должны установить все атрибуты данных, значения которых отличаются от значения по умолчанию, чтобы указать, что предварительно отрисованная разметка отражает значение по умолчанию параметра соответствующего виджета.
Виджет textinput обертывает виджеты, основанные на input, в div, используемые для создания стиля. Элементы textarea не обертываются в такой div.
В примере ниже мы добавляем атрибут data-corners="false" к элементу input, поскольку класс ui-corner-all отсутствует в обёртке, что указывает на то, что значение опции "corners" должно быть false.
<label for="pre-rendered-text-field">Pre-rendered input:</label> <div class="ui-input-text ui-body-inherit ui-shadow-inset"> <input type="text" data-enhanced="true" data-corners="false" name="pre-rendered-text-field" id="pre-rendered-text-field"> </div>
true autogrow. Необходимо ли обновлять размер элемента textarea при первом появлении, а также при изменении содержимого элемента.
Этот параметр применяется только к виджетам textinput, основанным на элементах textarea.
Этот параметр также доступен как атрибут данных: data-autogrow="false".
Инициализация textinput с указанным параметром autogrow:
$( ".selector" ).textinput({
autogrow: false
}); Получение или установка параметра autogrow, после инициализации:
// Getter var autogrow = $( ".selector" ).textinput( "option", "autogrow" ); // Setter $( ".selector" ).textinput( "option", "autogrow", false );
{
"ui-textinput": "ui-corner-all ui-shadow-inset",
"ui-textinput-search-icon": "ui-icon ui-alt-icon ui-icon-search",
"ui-textinput-clear-button": "ui-corner-all"
} Укажите дополнительные классы, которые нужно добавить к элементам виджета. Любой из классов, указанных в разделе Тема оформления, может использоваться в качестве ключей для переопределения их значения. Чтобы узнать больше об этом параметре, ознакомьтесь со статьей статья о параметре classes.
Инициализация textinput с указанным параметром classes, изменение темы оформления для класса ui-textinput:
$( ".selector" ).textinput({
classes: {
"ui-textinput": "highlight"
}
}); Получение или установка свойства параметра classes, после инициализации, здесь чтение и изменение темы оформления для класса ui-textinput:
// Getter var themeClass = $( ".selector" ).textinput( "option", "classes.ui-textinput" ); // Setter $( ".selector" ).textinput( "option", "classes.ui-textinput", "highlight" );
false clearButton. Добавляет кнопку очистки к полю ввода, если установлено значение true.
Этот параметр применяется только к виджетам textinput, основанным на элементах input.
Этот параметр также доступен как атрибут данных: data-clear-btn="true".
Инициализация textinput с указанным параметром clearBtn:
$( ".selector" ).textinput({
clearBtn: true
}); Получение или установка параметра clearBtn, после инициализации:
// Getter var clearBtn = $( ".selector" ).textinput( "option", "clearBtn" ); // Setter $( ".selector" ).textinput( "option", "clearBtn", true );
"Clear text" clearButton. Текстовое описание для дополнительной кнопки очистки, полезное для вспомогательных технологий, таких как программы чтения с экрана.
Этот параметр применяется только к виджетам textinput, основанным на элементах input.
Этот параметр также доступен как атрибут данных: data-clear-btn-text="Clear value".
Инициализация textinput с указанным параметром clearBtnText:
$( ".selector" ).textinput({
clearBtnText: "Clear value"
}); Получение или установка параметра clearBtnText, после инициализации:
// Getter var clearBtnText = $( ".selector" ).textinput( "option", "clearBtnText" ); // Setter $( ".selector" ).textinput( "option", "clearBtnText", "Clear value" );
true true, добавляя класс ui-corner-all к внешнему элементу виджета textinput. Этот параметр также доступен как атрибут данных: data-corners="false".
Инициализация textinput с указанным параметром corners:
$( ".selector" ).textinput({
corners: false
}); Получение или установка параметра corners, после инициализации:
// Getter var corners = $( ".selector" ).textinput( "option", "corners" ); // Setter $( ".selector" ).textinput( "option", "corners", false );
false true указывает, что другие параметры виджетов имеют значения по умолчанию, и заставляет код автоматического улучшения виджетов jQuery Mobile опускать шаг, на котором он извлекает значения параметров из атрибутов данных. Это может улучшить время запуска. Этот параметр также доступен как атрибут данных: data-defaults="true".
Инициализация textinput с указанным параметром defaults:
$( ".selector" ).textinput({
defaults: true
}); Получение или установка параметра defaults, после инициализации:
// Getter var defaults = $( ".selector" ).textinput( "option", "defaults" ); // Setter $( ".selector" ).textinput( "option", "defaults", true );
false true. Этот параметр также доступен как атрибут данных: data-disabled="true".
Инициализация textinput с указанным параметром disabled:
$( ".selector" ).textinput({
disabled: true
}); Получение или установка параметра disabled, после инициализации:
// Getter var disabled = $( ".selector" ).textinput( "option", "disabled" ); // Setter $( ".selector" ).textinput( "option", "disabled", true );
false Этот параметр также доступен как атрибут данных: data-enhanced="true".
Инициализация textinput с указанным параметром enhanced:
$( ".selector" ).textinput({
enhanced: true
}); Получение или установка параметра enhanced, после инициализации:
// Getter var enhanced = $( ".selector" ).textinput( "option", "enhanced" ); // Setter $( ".selector" ).textinput( "option", "enhanced", true );
See below Значение по умолчанию initSelector для виджета textinput:
""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[type='time'], input[type='date'], input[type='month'], input[type='week'], input[type='datetime'], input[type='datetime-local'], input[type='color'], input:not([type]), input[type='file']""
Примечание: Этот параметр устарел в версии 1.4.0 и будет удален в версии 1.5.0.
Начиная с jQuery Mobile 1.4.0, initSelector больше не является параметром виджета. Вместо этого он объявлен непосредственно в прототипе виджета. Таким образом, вы можете указать пользовательское значение, обработав событие mobileinit и переписав initSelector в прототипе:
$( document ).on( "mobileinit", function() {
$.mobile.textinput.prototype.initSelector = "div.custom";
}); Примечание: Не забудьте прикрепить обработчик mobileinit после загрузки jQuery, но до загрузки jQuery Mobile, поскольку событие срабатывает в процессе загрузки jQuery Mobile.
Значение этого параметра представляет собой строку селектора jQuery. Фреймворк выбирает элементы на основе значения этого параметра и создает экземпляры виджетов textinput для каждого из полученных элементов списка.
(версия устарела: 1.4.0)100 autogrow. Время (в миллисекундах), которое нужно подождать между нажатием клавиши и изменением размера элемента textarea. Если в течение этого времени происходит другое нажатие клавиши, изменение размера откладывается еще на такой же период времени.
Этот параметр применяется только к виджетам textinput, основанным на элементах textarea.
Этот параметр также доступен как атрибут данных: data-keyup-timeout-buffer="150".
Инициализация textinput с указанным параметром keyupTimeoutBuffer:
$( ".selector" ).textinput({
keyupTimeoutBuffer: 150
}); Получение или установка параметра keyupTimeoutBuffer, после инициализации:
// Getter var keyupTimeoutBuffer = $( ".selector" ).textinput( "option", "keyupTimeoutBuffer" ); // Setter $( ".selector" ).textinput( "option", "keyupTimeoutBuffer", 150 );
null (false) true, будет отображаться более компактная версия textinput, которая использует меньшую высоту, применяя класс ui-mini к внешнему элементу виджета textinput. Примечание: Параметр mini устарел в версии 1.5 и будет удален в версии 1.6
Этот параметр также доступен как атрибут данных: data-mini="true".
true on iOS platforms Этот параметр также доступен как атрибут данных: data-prevent-focus-zoom="true".
Инициализация textinput с указанным параметром preventFocusZoom:
$( ".selector" ).textinput({
preventFocusZoom: true
}); Получение или установка параметра preventFocusZoom, после инициализации:
// Getter var preventFocusZoom = $( ".selector" ).textinput( "option", "preventFocusZoom" ); // Setter $( ".selector" ).textinput( "option", "preventFocusZoom", true );
null, inherited from parent Возможные значения: буква палитры (a-z).
Этот параметр также доступен как атрибут данных: data-theme="b".
Инициализация textinput с указанным параметром theme:
$( ".selector" ).textinput({
theme: "b"
}); Получение или установка параметра theme, после инициализации:
// Getter var theme = $( ".selector" ).textinput( "option", "theme" ); // Setter $( ".selector" ).textinput( "option", "theme", "b" );
"" Этот параметр также доступен как атрибут данных: data-wrapper-class="true".
Инициализируйте textinput с указанным параметром wrapperClass:
$( ".selector" ).textinput({
wrapperClass: "custom-class"
}); Получите или задайте параметр wrapperClass, после инициализации:
// Getter var wrapperClass = $( ".selector" ).textinput( "option", "wrapperClass" ); // Setter $( ".selector" ).textinput( "option", "wrapperClass", "custom-class" );
Вызов метода destroy:
$( ".selector" ).textinput( "destroy" );
Вызов метода disable:
$( ".selector" ).textinput( "disable" );
Вызов метода enable:
$( ".selector" ).textinput( "enable" );
optionName.Вызов метода:
var isDisabled = $( ".selector" ).textinput( "option", "disabled" );
Вызов метода:
var options = $( ".selector" ).textinput( "option" );
optionName.Вызов метода:
$( ".selector" ).textinput( "option", "disabled", true );
Вызов метода:
$( ".selector" ).textinput( "option", { disabled: true } ); Этот метод предоставляется расширением autogrow, и он устанавливает высоту элемента textarea на основе его содержимого. Вы должны вызвать этот метод, когда элемент textarea становится видимым, чтобы убедиться, что его начальная высота соответствует его содержимому.
Вызов метода refresh:
$( ".selector" ).textinput( "refresh" );
textinputcreate Примечание: Объект ui пуст, но включён для согласованности с другими событиями.
Инициализируйте textinput с указанным обратным вызовом create:
$( ".selector" ).textinput({
create: function( event, ui ) {}
}); Привяжите обработчик событий к событию textinputcreate:
$( ".selector" ).on( "textinputcreate", function( event, ui ) {} ); Базовый пример поля ввода поиска
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>textinput demo</title>
<link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>
<div data-role="page" id="page1">
<div data-role="header">
<h1>jQuery Mobile Example</h1>
</div>
<div role="main" class="ui-content">
<label for="basic">Text Input:</label>
<input type="text" name="name" id="basic" value="">
</div>
</div>
</body>
</html> Базовый пример поля ввода поиска
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>textinput demo</title>
<link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>
<div data-role="page" id="page1">
<div data-role="header">
<h1>jQuery Mobile Example</h1>
</div>
<div role="main" class="ui-content">
<label for="search-basic">Search Input:</label>
<input type="search" name="search" id="search-basic" value="">
</div>
</div>
</body>
</html>
© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquerymobile.com/textinput
|
|