2010-07-30 2 views
66

У меня есть мобильный веб-сайт и он имеет некоторые HTML input элементов в нем, как это:Как заставить клавиатуру с цифрами на мобильном сайте в Android

<input type="text" name="txtAccessoryCost" size="6" /> 

Я внедренные сайте в WebView для возможного Android 2.1, так что это будет также приложение для Android.

Возможно ли получить клавиатуру с числами вместо стандартного с буквами, когда этот HTML-код input сфокусирован?

Или, возможно ли установить его для всего приложения (возможно, что-то в the Manifest file), если это невозможно для HTML-элемента?

+0

Если хотят цифровую клавиатуру прошивки в дополнение к Android, вы должны сделать это: http://stackoverflow.com/a/31619311/806956 –

ответ

82
<input type="number" /> 
<input type="tel" /> 

Обе эти цифры представляют собой числовую клавиатуру, когда фокус фокуса входа.

<input type="search" /> показывает нормальную клавиатуру с дополнительной кнопки поиска

Все остальное, кажется, чтобы вызвать стандартную клавиатуру.

+0

Посмотрите на него сегодня, а затем сообщите, будет ли это работать. Спасибо, Ричард! – ncakmak

+1

Привет, Ричард. Ничего не работало, поле ввода все еще открывает стандартную клавиатуру. – ncakmak

+0

[Список спецификаций HTML 'input'' type '] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html) , включая ['number'] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#number-state-%28type=number % 29) и ['tel'] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#telephone-state-%28type = тела% 29). –

6

Это должно сработать. Но у меня такие же проблемы на телефоне Android.

<input type="number" /> <input type="tel" /> 

я узнал, что если бы я не включил jquerymobile-рамки, клавиатура правильно показал на двух типах полей.

Но я не нашел решение этой проблемы, если вам действительно нужно использовать jquerymobile.

ОБНОВЛЕНИЕ: я выяснил, что если форма-тег хранится из

<div data-role="page"> 

цифровой клавиатуры на не показана. Это должно быть ошибка ...

+0

Спасибо за рытье в этом. Я не уверен, что понимаю: «если тег формы хранится вне div [data-role = page]». В моем случае проблема возникает с формами, которые хорошо вложены внутри div [data-role = page]. Возможно, проблема в том, что эти страницы отображаются в моем случае в виде диалогов? – Wytze

37

ВАЖНО

Я отправляю это как ответ, а не комментарий, как это довольно важная информация, и она будет привлекать больше внимания в этом формате.

Как отметили другие ребята, вы можете заставить устройство, чтобы показать вам цифровую клавиатуру с type="number"/type="tel", но я должен подчеркнуть, что вы должны быть предельно осторожным с этим.

Если кто-то ожидает номер, начинающийся с нулей, например, 000222, то она, скорее всего, возникнут проблемы, так как некоторые браузеры (рабочий стол Chrome, например) будет отправлять на сервер 222, который является не то, что она хочет.

О type="tel" Я не могу сказать ничего подобного, но лично я его не использую, так как его поведение на разных телефонах может меняться.Я бы ограничиться простой pattern="[0-9]*", которые не работают в Android

+4

Автоматическое переформатирование, вероятно, не происходит с 'type =" tel ". [Спектр] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#telephone-state-%28type=tel%29) отмечает, что 'tel' не применяет какой-либо конкретный синтаксис, в отличие от [' number'] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type- attribute.html # number-state-% 28type = number% 29), который требует, чтобы его значение было [допустимым числом с плавающей запятой] (http://www.whatwg.org/specs/web-apps/current-work /multipage/common-microsyntaxes.html#valid-floating-point-number). –

+0

Насколько это плохо? Мы пытаемся ускорить процесс создания своих мобильных клиентов, и это похоже на очевидное решение, но мы также хотим что-то надежное. Вы указали сильное предупреждение против использования этого метода. Интересно, можете ли вы подробнее рассказать об этом? –

+0

@Philll_t, пользователю необходимо отправить данные «000222», но вы на стороне сервера получите «222».Разве вы не видите, что функциональность полностью нарушена? Сервер получает неверные данные. – user907860

-1

input type = number

Если вы хотите, чтобы обеспечить ввод номера, вы можете использовать тип ввода HTML5 = «номер» значение атрибута.

<input type="number" name="n" /> 

Вот клавиатура, которая приходит на iPhone 4:

iPhone Скриншот HTML5 тип ввода номер Android 2.2 использует эту клавиатуру для типа = номер:

Android Скриншот HTML5 типа ввода номер

1

Некоторые браузеры, которые отправляют ведущий нуль на сервер, когда тип ввода является «числом». Поэтому я использую смешивание JQuery и HTML, чтобы загрузить цифровую клавиатуру, а также убедитесь, что значение передаются в виде текста, а не как номер:

$(document).ready(function(){ 
 
$(".numberonly").focus(function(){$(this).attr("type","number")}); 
 
$(".numberonly").blur(function(){$(this).attr("type","text")}); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="numberonly">

+2

Это вызывает раздражающую проблему в Chrome для Android. Когда вы нажимаете на вход, клавиатура делает ** не **. Затем вы должны нажать на текстовое поле второй раз, а затем клавиатура выйдет на клавиатуру с номером. Мне очень жаль, что у нас не было опции 'type =" digits ", поэтому нам не нужно было иметь эти хаки. Я имею в виду, что это не похоже на нулевое число, это редкий (Zip-коды в США - очевидный пример). – Jaxidian

+0

У меня тоже такая же проблема! поле настройки «type = tel» является лучшим решением. –

Смежные вопросы