如何在Phonegap应用程序的jQueryMobile页面中隐藏键盘?

如何在Phonegap应用程序的jQueryMobile页面中隐藏键盘?,jquery,jquery-mobile,cordova,Jquery,Jquery Mobile,Cordova,我在iPhone模拟器中隐藏键盘时遇到问题。我的HTML代码: <form id="my_form"> <input type="search" id="searchBar" /> </form> 一切都按照我的需要进行:我可以获得表单值并执行一些Ajax。但当函数返回false时,iPhone模拟器中的虚拟键盘仍然可见。如何隐藏键盘?还有别的方法吗?当用户在iPhone上搜索并按下“Go”键时,我需要使用Ajax将数据传递到服务器。搜索结果应显示在

我在iPhone模拟器中隐藏键盘时遇到问题。我的HTML代码:

<form id="my_form">
    <input type="search" id="searchBar" />
</form>
一切都按照我的需要进行:我可以获得表单值并执行一些Ajax。但当函数返回false时,iPhone模拟器中的虚拟键盘仍然可见。如何隐藏键盘?还有别的方法吗?当用户在iPhone上搜索并按下“Go”键时,我需要使用Ajax将数据传递到服务器。搜索结果应显示在同一页面中(已完成)。用户可以再次在同一页面中搜索

请帮帮我

谢谢


--regeint

尝试将另一个可聚焦元素(例如:a
)添加到页面中(将其高度设置为0,使其不可见但可聚焦),并在返回false之前将焦点移到该元素。

在jQuery中,如果
返回false,它将停止默认浏览器行为,在本例中,默认浏览器行为既是提交表单,也是关闭键盘。以下方面应起作用:

<form id="my_form">
    <input type="search" id="searchBar" />
    <div style="height:0;width:0;">
        <input id="focusable" type="checkbox" />
    </div>
</form>
谢谢你,谢谢你帮助我。 事实上,我做了下面的事情,它成功了。 它不会影响此元素上方或下方的css

$('.clr').after('<input type="checkbox" id="focusable" style="height:0; margin-left:-200px; clear: both;" />');
$('#focusable').focus(); 
$('.clr')。在('')之后;
$(“#可聚焦”).focus();

再次感谢。:)

不用将焦点切换到另一个元素,只需像这样模糊输入即可:

$('#searchBar').blur();

它将隐藏虚拟键盘。

我使用了regeint解决方案,但做了一点修改,它不起作用,因为我告诉phonegap允许在
Cordova.plist中显示键盘而无需用户交互。我将
KeyboardDisplayRequiresAction
设置为
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();
}
函数隐藏键盘(){
$($.mobile.pageContainer).after('');
$('#focusable').focus();//也许.blur()也可以。
$(“#可聚焦”).remove();
}
来自

这是不言自明的。第二行将取消所有输入字段的焦点,它依赖于jQuery。我发现在单一聚焦文本字段上调用blur()并不总是有效。这两条线路中的任何一条都应该独立工作,但不能同时停止这两条线路

如果您不介意失去焦点,那么
.blur()
方法可能是最有效的方法。但是,如果,例如,您需要它,以便在typeahead中打开选项列表,该怎么办

下面你可以看到我找到的解决这个问题的方法

$('keepMeFocused')。单击(函数(){
$(this.attr('type','text');
$('hideKeyboard').removeAttr('disabled');
$('#msg').show();
});
$(“#隐藏板”)。单击(函数(){
$('keepMeFocused').attr('type','button').focus();
$('hideKeyboard').attr('disabled',true);
});
#保持聚焦{
框大小:边框框;
宽度:200px;
高度:24px;
背景:无;
边框:实心1px#ccc;
填充:0.4px;
文本对齐:左对齐;
}
#隐藏板{
高度:24px;
背景:#666;
边框:实心1px#666;
边界半径:2px;
颜色:#fff;
垂直对齐:顶部;
}
#隐藏板[禁用]{
背景:ddd;
边框颜色:#ddd;
}
#保持焦点:不(:焦点)~#msg{
显示:无;
}

隐藏键盘

在输入具有焦点时让我保持可见

尝试执行techfoobar所做的操作,但使用复选框而不是他建议的选择(选择可能会弹出一个空列表)。我更新了我的答案以反映这一点。
$('#searchBar').blur();
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();
}
var hideKeyboard = function() {
    document.activeElement.blur();
    $("input").blur();
};