Ответ 1
Вероятно, у вас
-webkit-user-select: none;
В вашем CSS где-нибудь. Если вы включите выбор текста для ввода
input, textarea { -webkit-user-select: text; }
он снова работает!
Мы разрабатываем мобильное веб-приложение в jQuery Mobile 1.0.1 и Phonegap 1.4.1 и сталкиваемся с проблемами с клавиатурой на галактике s2.
У нас есть меню, которое открывается и содержит вход для поиска:
<input type="search" placeholder="Search..." name="search" id="menu_search" data-role="none" />
Когда мы нажимаем на вход так, чтобы он получал фокус, клавиатура открывается, но не позволяет нам вводить что-либо. Я предполагаю, что подсказка заключается в том, что она дает нам обычную текстовую клавиатуру, а не клавиатуру поиска (которая имеет увеличительное стекло в качестве клавиши ввода)
Если мы сфокусируем вход при открытии меню: $("#menu_search").focus()
- клавиатура поиска открыта, когда отображается меню, и мы можем искать НО, как только мы нажимаем на вход, клавиатура переходит на обычную клавиатуру, и мы неспособный напечатать что-либо.
Другая подсказка заключается в том, что при наборе текста на клавиатуре выполняется автоматическое предсказание, но при нажатии на правильную опцию на вход добавляется только пробел и ни один из других символов.
Мы попробовали кучу других атрибутов на входе поиска безрезультатно:
<input type="search" placeholder="Search..." name="search" id="menu_search" value="" data-role="none" autocomplete="off" autocorrect="off" autocapitalization="off" role="textbox" aria-autocomplete="list" aria-haspopup="true" style="-webkit-appearance:searchfield;" class="ui-autocomplete-input" />
Все это отлично работает на HTC Desire под управлением 2.2 и желание запускать CM7 (Android 2.3.7)
Мы даже попытались изменить ввод в текстовое поле, но это почти то же самое: (
Я также пробовал:
$("#menu_search").live('focus',function(event){
event.preventDefault();
});
чтобы убедиться, что это не позволит ему сменить клавиатуру, но не повезло.
Однако у нас есть другой поиск в другом месте приложения, который отлично работает, с той лишь разницей, что другой поиск находится на странице "propper": data-role="page"
, а меню находится за пределами всех других страниц и в его собственный, только что установленный в скрытый исход.
Пожалуйста, помогите, im плачет кровь atm!
Вероятно, у вас
-webkit-user-select: none;
В вашем CSS где-нибудь. Если вы включите выбор текста для ввода
input, textarea { -webkit-user-select: text; }
он снова работает!
Вы пытались добавить атрибут data-native-menu = "false" в свой тег ввода поиска.
Если вы все еще застряли на этом, попробуйте обновить до phonegap 2.0. Он исправляет некоторые проблемы с вводом.
$('#pageid').live('pageshow', function(event, ui) {
$(this).delegate('input[data-type="search"]', 'keyup', function () {
if($(this).val().length != 0)
keyword = $(this).val();
});
});
Создайте приложение с помощью phonegap + jequery, которое вы ищете в playStore "AssignmentReminder" или введите поле поиска koshWTF. так или иначе. Я бы рекомендовал эту проблему раньше и не исправил ее, так как я думаю, ее проблема 4.0.1, а не разрыв в телефоне или jQuery mobile, потому что я все еще могу печатать под 4.0.4 и меньше. надеюсь, что вы найдете ответ на него, потому что я в последний раз искал aloot и не смог его найти.
У меня/была такая же проблема в моей версии Note II 4.1.1, основанной на использовании Phonegap 2.6.0 (хотя я также могу ее воспроизвести в версии 2.5.0), jQuery Mobile 1.2.0 и jQuery 1.7.2. Моя клавиатура SwiftKey 4.0.1.128.
За исключением того, что вместо одного ввода, вызывающего у меня проблемы, у моей формы есть несколько входов, которые в конечном итоге вызывают у меня проблемы. Это настоящая головная боль, потому что ее трудно реплицировать - вход всегда работает сначала, но если вы переключаетесь между входами произвольно и достаточно долго, он в конечном итоге перестает работать в произвольное время.
Эта ошибка выполнялась достаточно быстро, так что это сделало бы ее довольно значительной проблемой, учитывая, что мне придется перезапустить приложение, чтобы снова получить форму, которая в конечном итоге перестанет работать. Моя новая структура формы работает хорошо; ошибка возникает после буквально минут ввода длинных строк и случайного переключения входов, которые, как я полагаю, никто не будет делать; но меня все еще расстраивает, что ошибка там.
Я попытался получить справку об этой ошибке на форуме jQuery Mobile, но они дали мне некоторый snarky комментарий о том, как это скорее всего использование моего идентификатора элемента, потому что, по-видимому, 99% (возможно, даже не реалистичные) ошибок JQM являются неправильными Использование идентификатора. Я знаю, что мои идентификаторы уникальны на каждой странице, но они настаивают на ошибке ID, даже не пытаясь правильно диагностировать проблему, но я отвлекаюсь.
Следует также отметить, что я нашел решение CSS, которое было предоставлено в другом ответе во многих других подобных проблемах в Интернете, но не в этой конкретной проблеме; хотя я понимаю его использование, CSS не исправил эту проблему для меня.
Моя форма динамически загружается в data-role = "content" DIV внутри data-role = "page" DIV, поэтому:
<div data-role="page">
<div data-role="content" id="my-form-holder">
</div>
</div>
Я нашел наилучшую структуру формы, по крайней мере в моем приложении, чтобы вызвать ошибку, которая является наименее часто:
<form id="account-add" action="add-edit-account.php" method="post" data-ajax="false" autocomplete="off">
<div data-role="fieldcontain" class="ui-hide-label">
<label for="custom-name">
</label>
<input name="custom-name" placeholder="Account Name" value="Service Name Here" type="text"><br>
<label for="custom-1">
</label>
<input name="custom-1" placeholder="User ID" type="text"><br>
<label for="custom-2">
</label>
<input name="custom-2" placeholder="Password" type="password"><br>
<input type="hidden" name="action" value="add-2">
<input type="hidden" name="newserviceid" value="3">
<input type="hidden" name="userid" value="1">
<input id="account-add-submit" type="submit" name="account-add-submit" value="Add Account">
</div>
</form>
Форма HTML извлекается через AJAX и загружается в DIV с помощью:
$(ajaxData).appendTo("#my-form-holder").trigger("create");
Естественно, ваша форма будет немного иной, и у вас может даже не быть формы, так как у вас есть только вход для поиска (переход к этому через мгновение). Но если у вас есть форма, то, что работает лучше всего для меня.
Поскольку вы находитесь в Phonegap, вам может даже не понадобиться теоретическое действие, поскольку у вас, вероятно, будет jQuery для обработки ввода, но в формах состояний jQuery Mobile docs должны быть атрибуты действий и методов, поэтому я не хотел идти против что. Кроме того, jQuery Mobile обычно имеет роль data-role = "field-содержать" DIV вокруг каждой группы метки/ввода, но я обнаружил, что ошибка произошла раньше, если я это сделаю. Опять же, ошибка возникает в произвольный момент, который никогда не бывает таким, поэтому я не знаю, связано ли это напрямую с DIV.
У меня также есть вход, закодированный на другой странице:
<div data-role="fieldcontain" class="ui-hide-label">
<label for="service-search-input">
</label>
<input name="service-search-input" id="service-search-input" placeholder="Enter a service to search for" type="search">
</div>
Кажется, это работает нормально. Тем не менее, нет никаких других входов для переключения, поэтому лучшее, что я могу сделать, чтобы попытаться воспроизвести ошибку, - это фокус/нефокусировка ввода, нажав в другом месте на странице. Хотя, я всегда могу напечатать изначально, тогда как ваша ошибка не позволяет вам вводить текст, если я правильно понимаю. Вы можете попробовать эту структуру HTML и посмотреть, работает ли она. Нет тега формы, окружающего этот вход.
Наши проблемы немного разные (у меня есть большинство моих проблем с динамически введенной формой, в то время как ваша жестко закодирована из того, что я собираю), но это единственная страница, которую я могу найти в любом месте, где напрямую адресована эта точная проблема, так что, надеюсь, это поможет, и мы сможем получить дополнительную информацию по этой проблеме.