Как скрыть клавиатуру на странице jQueryMobile в приложении Phonegap?
У меня проблема с скрытой клавиатурой в симуляторе iPhone. Мой HTML-код:
<form id="my_form">
<input type="search" id="searchBar" />
</form>
Код jQuery:
$("#my_form").submit(function() {
one = $('#searchBar').val();
console.log(one);
doSearch(one);
return false;
});
Все работает так, как мне нужно: я могу получить значение формы и выполнить некоторые Ajax. Но когда функция возвращает false, виртуальная клавиатура в симуляторе iPhone все еще видна. Как скрыть клавиатуру? Есть ли другой способ сделать это? Мне нужно передать данные на сервер с помощью Ajax, когда пользователь выполняет поиск и нажимает "Go" на iPhone. Результат поиска должен быть показан на той же странице (уже сделано). Пользователь может снова выполнить поиск на той же странице.
Пожалуйста, помогите мне.
Спасибо,
- regeint
Ответы
Ответ 1
Спасибо Hosh Sadiq и techfoobar за помощь.
На самом деле я сделал следующее, и это сработало.
Это не повлияло на css выше или ниже этого элемента.
$('.clr').after('<input type="checkbox" id="focusable" style="height:0; margin-left:-200px; clear: both;" />');
$('#focusable').focus();
Спасибо еще раз.:)
Ответ 2
Вместо переключения фокуса на другой элемент вы можете просто размыть свой вход следующим образом:
$('#searchBar').blur();
Он скроет виртуальную клавиатуру.
Ответ 3
из здесь
Это довольно понятно. Вторая строка дефокусирует все поля ввода, и она полагается на jQuery. Я обнаружил, что вызов blur() на одном сосредоточенном текстовом поле не всегда срабатывает. Либо одна из этих строк должна работать независимо, но обе они вместе не могут быть остановлены!
var hideKeyboard = function() {
document.activeElement.blur();
$("input").blur();
};
Ответ 4
В jQuery, если вы return false;
, он остановит поведение браузера по умолчанию, которое в этом случае представляет как форму, так и закрытие клавиатуры. Должно работать следующее:
<form id="my_form">
<input type="search" id="searchBar" />
<div style="height:0;width:0;">
<input id="focusable" type="checkbox" />
</div>
</form>
JQuery
$("#my_form").submit(function(){
one = $('#searchBar').val();
console.log(one);
doSearch(one);
$('#focusable').focus();
return false;
});
Ответ 5
Попробуйте добавить к вашей странице другой элемент, который сфокусирован (например: a <select>
) (установите его высоту на 0, чтобы его невидимая еще не была сфокусирована) и смените фокус на этот элемент перед возвратом false.
Ответ 6
Я использовал regeint-решение, но немного изменил его, потому что я сказал phonegap, чтобы показать клавиатуру без взаимодействия с пользователем в Cordova.plist
. Я установил KeyboardDisplayRequiresUserAction
в NO
function hideTheKeyBoard() {
$($.mobile.pageContainer).after('<input type="checkbox" id="focusable" style="height:0;margin-left:-200px;" />');
$('#focusable').focus();// maybe .blur() would work too.
$('#focusable').remove();
}