>我有一个移动页面,可以打开一个对话框。
在对话框中,有一个多选菜单。
一切正常,例如
- 我在对话框中单击多选择菜单的按钮以打开菜单,
- 从多个选择中选择项目
- 关闭多选菜单
- 然后我关闭对话框。
现在,当我将data-native-menu="false"
添加到多选菜单时,对话框行为会发生变化,例如
- 我在对话框中单击多选择菜单的按钮以打开菜单,
- 从多个选择中选择项目
- 关闭多选菜单
- 然后我关闭对话框。
- 对话框已关闭,我看到上一页。换句话说,我已经在历史上浏览了一页
对此的解决方案是什么?
法典
这将打开第一个对话框
<a href="#refine-search" data-rel="dialog" data-role="button" data-theme="a" data-inline="true">Refine</a>
多选菜单的代码
<div class="ui-block-b">
<select name="select-choice-1" id="select-choice-1" multiple="multiple" data-theme="b" data-native-menu="false">
<option>Select</option>
<?php foreach($cuisines as $cuisine): ?>
<?php echo "<option value='{$cuisine->cuisine_id}'>{$cuisine->cuisine_name}</option>" ;?>
<?php endforeach; ?>
</select>
</div>
关联的 js
jQuery('#refinement-done').on('click', function() {
console.log('refinement done');
var options = '<?php echo $search_options; ?>&',
min_delivery_amt,
is_pure_veg,
is_open,
min_rating,
cuisines;
min_delivery_amt = $('input[name="min"]').val();
if(min_delivery_amt && !parseInt(min_delivery_amt, 10)) {
alert('Min. Delivery Amount must be a number');
return false;
}
jQuery('.ui-dialog').dialog('close');
if(jQuery('input[name="min"]').val())
options += 'minprice=' + jQuery('input[name="min"]').val() + '&';
if(jQuery('#select-choice-1').val())
options += "cuisine=" + jQuery('#select-choice-1').val().join(',') + '&';
options += 'pureveg=' + jQuery('#is_pure_veg').val() + '&';
if(jQuery('#rating').raty('score')) {
options += 'minrating=' + jQuery('#rating').raty('score') + '&maxrating=5';
}
console.log('search data');
console.log(options);
JE.search_restaurants(options, "<?php echo $service_type; ?>");
});
这应该是jQM 1.2的一个已知问题。它似乎是由在更改页面调用上设置的changeHash: false
选项引起的。
但是,您似乎没有在任何地方设置此选项,默认值为 true
。实际上,在我现在正在从事的项目中,我遇到了与您相同的问题,如果我设法查明原因,我会通知您。目前,我只是恢复到jQM的早期版本(我知道这不是理想的解决方案)。
编辑:
JQuery Mobile 1.2 Beta 今天发布,所以我开始再次深入研究这个问题,看看它是否得到解决。不是。但是,我确实设法缩小了问题的范围,如此jsfiddle所示。如果我$.mobile.changePage.defaults.reloadPage = true;
删除该行,那么一切正常。不幸的是,对于我的应用程序,我需要将其设置为 true 以防止页面缓存。