1

我有一个移动页面,它会打开一个对话框。

在对话框中,有一个多选菜单。

一切正常,比如

  1. 我单击对话框中的多选菜单按钮以打开菜单,
  2. 我从多选中选择项目
  3. 关闭多选菜单
  4. 然后我关闭对话框。

现在,当我添加data-native-menu="false"到多选菜单时,对话框行为会发生变化,例如

  1. 我单击对话框中的多选菜单按钮以打开菜单,
  2. 我从多选中选择项目
  3. 关闭多选菜单
  4. 然后我关闭对话框。
  5. 对话框已关闭,我看到了上一页。换句话说,我已经浏览了一页历史

解决方案是什么?

代码

这将打开第一个对话框

<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; ?>");
    });
4

1 回答 1

2

这应该是jQM 1.2的一个已知问题。它似乎是由changeHash: false在 changePage 调用上设置的选项引起的。

但是,您似乎没有在任何地方设置此选项,默认值为true. 在我现在正在进行的一个项目中,我实际上遇到了与您相同的问题,如果我设法查明原因,我会告诉您。目前,我只是恢复到早期版本的 jQM(我知道这不是理想的解决方案)。

编辑:

JQuery Mobile 1.2 Beta 今天发布了,所以我开始再次深入研究这个问题,看看它是否得到了解决。它不是。我确实做到了,但是设法缩小了问题的范围,如jsfiddle所示。如果我删除该行$.mobile.changePage.defaults.reloadPage = true;,那么一切正常。不幸的是,对于我的应用程序,我需要将其设置为 true 以防止页面缓存。

于 2012-08-13T14:20:52.043 回答