2012-02-12 53 views
16

我们正在开发jQuery Mobile 1.0.1和Phonegap 1.4.1中的移动web应用程序,并遇到了Galaxy S2上的键盘问题。使用jQuery Mobile和Phonegap在Galaxy S2上输入键盘错误

我们有滑出,并包含一个搜索输入的菜单:

<input type="search" placeholder="Search..." name="search" id="menu_search" data-role="none" /> 

当我们在输入挖掘,使其获得焦点,键盘打开,但不允许我们在任何类型我猜测这里的线索是它给我们一个普通的文本键盘而不是搜索键盘(它有一个放大镜作为输入键)

如果我们在菜单打开时关注输入:$("#menu_search").focus() - 搜索键盘打开当菜单显示时,只要我们点击输入键,我们就可以搜索但是键盘变成普通键盘我们无法输入任何内容。

另一个线索是,虽然在键盘上键入自动预测工作,但是当点击正确的选项时,只有一个空格被添加到输入,而没有其他字符。

我们已经尝试了一堆其他attribues对搜索输入无济于事:

<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" /> 

这一切工作正常运行2.2的HTC Desire和运行CM7(安卓2.3.7)的愿望

我们甚至试图改变输入到一个文本但这并几乎同样的事情:(

我也试过:

$("#menu_search").live('focus',function(event){ 
    event.preventDefault(); 
}); 

看看是否会阻止它改变键盘,但没有运气。

但是,我们确实在应用程序中的其他搜索输入工作正常,唯一的区别是其他搜索处于“propper”页面:data-role="page"并且菜单在所有其他页面外自己最初设置为隐藏。

请帮忙,我在哭血的atm!

+0

关于galaxy s2你正在使用哪个版本的android? – 2012-03-04 20:56:21

+0

当你把所有的东西都拿出来并且只有你的输入有一个页面时会发生什么? – nategood 2012-03-05 05:14:15

+0

您是否尝试过我的解决方案?如果有效:你能接受答案吗? – 2013-04-17 07:59:38

回答

0

您是否尝试在搜索输入标记中添加data-native-menu =“false”属性。

2

你可能有

-webkit-user-select: none; 

在你的CSS地方。如果您启用文本选择输入

input, textarea { -webkit-user-select: text; } 

它再次工作!

0

如果你仍然坚持这一点,请尝试更新到phonegap 2.0。它修复了一些输入问题。

0
$('#pageid').live('pageshow', function(event, ui) { 
    $(this).delegate('input[data-type="search"]', 'keyup', function() { 
     if($(this).val().length != 0) 
     keyword = $(this).val(); 

    }); 
}); 
0

心中已经使用PhoneGap的创建一个应用程序+ jequery你在搜索领域koshWTF寻找它Play商店中的“AssignmentReminder”或类型。无论如何,它们都是 。我曾鼓励这个问题,并没有修复它,因为我猜它的4.0.1问题不是电话差距,也不是jQuery的手机,因为我仍然可以输入在4.0.4和更小。希望你找到答案,因为我上次搜索aloot并找不到它。

0

我使用Phonegap 2.6.0(虽然我也可以在2.5.0中复制它),jQuery Mobile 1.2.0和jQuery 1.7.2运行4.1.1的Note II上发生过同样的问题。我的键盘是SwiftKey 4.0.1.128。

除了不只是一个输入引起我的问​​题,我的表单有多个输入,最终给我带来麻烦。这是一个非常头痛的问题,因为它很难复制 - 输入总是首先运行,但如果您随意切换输入和足够长的输入,它最终会在随机时间停止工作。

此错误用来很快发生,因此,这将使它成为一个非常显著的问题考虑,我将不得不重新启动该应用获取形式再次合作,这将最终停止再次工作。我的新表单结构似乎运作良好;在输入长字符串和随机切换输入之后,我认为没有用户会这样做;但它仍然让我感到错误在那里。

我试图在jQuery Mobile论坛上得到关于这个错误的帮助,但是他们给了我一些关于它可能仅仅是我的元素ID使用情况的评论,因为显然99%(可能不是现实的)JQM错误来自ID使用不正确。我知道我的ID在每个页面都是唯一的,但他们坚持认为这是一个ID错误,甚至没有尝试正确地诊断问题,但我离题了。

我也应该注意到,我发现,在另一个答案在网络上提供了许多其他类似问题的CSS解决方案,但没有这个确切的问题;虽然我了解它的用法,但CSS并没有解决我的问题。

我的形式动态加载到一个数据角色=“内容” DIV的数据角色=“页面” 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的文档状态的形式必须有行动方法属性,所以我没有”不想违背这一点。此外,jQuery Mobile的通常有一个数据角色=“实地包含”每个标签/输入组围绕 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结构,看看它是否有效。围绕该输入没有表格标签。

我们的问题有点不同(我对动态注入表单的大部分问题,而我的问题是从我收集的内容中进行硬编码的),但这是我能够在任何地方找到的唯一直接解决此问题的唯一页面,所以希望这有助于我们进一步了解这个问题。