添加data-native-menu false导致页面返回对话框关闭

时间:2012-08-13 05:46:11

标签: jquery jquery-mobile

我有一个移动页面,可以打开一个对话框。

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

一切正常,比如

  1. 我点击对话框中的多选菜单按钮打开菜单
  2. 我从mulitselect中选择项目
  3. 关闭多选菜单
  4. 然后关闭对话框。
  5. 现在,当我将data-native-menu="false"添加到多选菜单时,对话框行为会发生变化,例如

    1. 我点击对话框中的多选菜单按钮打开菜单
    2. 我从mulitselect中选择项目
    3. 关闭多选菜单
    4. 然后关闭对话框。
    5. 对话框已关闭,我看到上一页。换句话说,我已经在历史中浏览了一页
    6. 这是什么解决方案?

      代码

      这将打开第一个对话框

      <a href="#refine-search" data-rel="dialog" data-role="button" data-theme="a" data-inline="true">Refine</a>
      

      mulitselect菜单的代码

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

1 个答案:

答案 0 :(得分:2)

这应该是known issue,jQM 1.2。它似乎是由在changePage调用上设置的changeHash: false选项引起的。

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

修改

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