Range.sliders在.submit()之后消失

时间:2016-03-08 07:45:49

标签: jquery ruby-on-rails ruby-on-rails-4 jquery-mobile

我有一个下拉列表和一个使用jQuery mobile for Rails表单的rangelider:

<%= form_tag(profile_path, remote: true, id: 'search_forms') do %>
  <%= select_tag 'q[activity]', options_from_collection_for_select(activities, :slug, :title, q[:activity]), id: 'activ_sel', prompt: "Select an activity" %>

  <div id="time-slider" data-role="rangeslider">            
    <input name="range1a" id="range1a" min="4" max="21" value="<%= @h1 %>" type="range" />
    <input name="range1b" id="range1b" min="4" max="21" value="<%= @h2 %>" type="range" />
  </div>

  <script>
    $("#activ_sel").change(function(){
      $('#search_forms').submit();
     });
  </script>

<% end %>

我目前的设置是在下拉列表更改后提交,之后我还想为滑块实现此功能。

虽然提交效果很好但问题是在提交如下所示的滑块后:enter image description here

我的javascripts资产上有jQuery Mobile库,并通过application.js文件中的//= require_tree .行加载它。

1 个答案:

答案 0 :(得分:0)

我对此无效的解释是,在调用.submit()并将表单设置为remote: true时,请求已发送但未触发jQuery Mobile的库重新加载,如预期的那样一个AJAX电话。

  

注意:请记住在加载jQuery之后但在加载jQuery Mobile之前附加mobileinit处理程序,因为该事件是作为jQuery Mobile的加载过程的一部分触发的。

我认为提交无限制(不确定原因)用于范围滑块的div并且没有再次绑定,因为它没有重新加载库。

无论如何解决这个问题的方法是在父元素上调用.trigger("create")来重新附加小部件。

关于.trigger()

  

描述:执行附加到给定事件类型的匹配元素的所有处理程序和行为。

感谢@Omar的帮助,也请考虑将此问题视为重复:jquery mobile trigger create method

参考:http://api.jquerymobile.com/rangeslider/