这是用cordova制作的android应用程序。表单具有多个选择框。轻按“选择”框时,选项以本地android样式显示,但闪烁。当您选择选项时,选项会消失,并且选项框上的文本不会更新。没有选择任何东西。它适用于第二次尝试。
每隔一秒钟尝试从选择框中选择一个选项将按预期方式工作。有趣的是,它不必是相同的选择框。只要在任何选择框上每秒钟尝试一次,就可以选择该选项。
使用jQuery Mobile 1.4.5和jQuery 2.2.3。
它与jQuery Mobile 1.3.2一起正常工作
编辑1
Android 6.0.1
加载页面后,将为每个选择框运行一个函数以填充选项:
function populateLocationOptions() {
$("#addLocation option").each(function() {
if ($(this).val() != 'Option') {
$(this).remove();
}
});
var locations = getLocationArray();
for (var i = 0; i < locations.length; i++) {
sLocationOption = "<option value=\"" + locations[i].id + "\">" + locations[i].name + "</option>";
$("#addLocation").append(sLocationOption);
}
$("#addLocation").selectmenu('refresh', true);
}
定义选择框的HTML部分:
<label for="addLocation" class="select"></label>
<select name="Location" id="addLocation" data-theme="c" >
<option value="Option" data-i18n="addpage.location">Select Location</option>
</select>
编辑2
在Android 5.1.1上正常运行
编辑3
在Android 6.0.1和cordova 6.0.0上重现该问题的最小示例。从
index.html
用cordova create
制成的香草锅炉板<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
<link rel="stylesheet" type="text/css" href="css/index.css">
<link rel="stylesheet" type="text/css" href="css/jquery.mobile-1.4.5.min.css"/>
<script src="js/jquery/jquery-2.2.3.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery/jquery.mobile-1.4.5.min.js"></script>
<title>Hello World</title>
</head>
<body>
<div data-role="page" id="add">
<div data-role="header">
<h1 id="addPageHeader" data-i18n="addpage.header">Flicker example</h1>
</div>
<div data-role="content">
<select name="Time" id="selectTime" data-theme="c">
<option value="Option">city</option>
<option value="Option">Paris</option>
<option value="Option">New york</option>
<option value="Option">London</option>
<option value="Option">Madrid</option>
</select>
</div>
<div data-role="footer" data-position="fixed" data-tap-toggle="false" data-id="footer">
<div data-role="navbar">
<ul>
<li><a href="#diary" data-transition="none" data-icon="bars">List</a></li>
<li><a href="#add" data-transition="none" data-icon="plus">Add</a></li>
<li><a href="#settings" data-transition="none" data-icon="gear">Settings</a></li>
</ul>
</div>
</div>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>
令人惊讶的是,当从
data-position="fixed"
div中删除footer
属性时,该问题消失了。 最佳答案
我无法使用data-position="fixed"
解决此问题。我删除了该属性,并使用自定义CSS实现了相同的效果。这是在jquery mobile支持的data-position
属性之前使用的经过调整的解决方案。下面列出的css文件是在jquery mobile css之后加载的。
body,
.ui-page {
min-height: 100% !important;
height: auto !important;
}
.ui-content
{
margin-bottom: 56px; /* footer size */
}
.ui-footer {
position: fixed;
bottom: 0;
width: 100%;
}
我的直觉是,这是jquery mobile无法与Android 6.x的webview一起正常使用。
关于javascript - 触摸选择框时,选择选项显示两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36617292/