我有一个下拉列表和一个使用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 %>
我目前的设置是在下拉列表更改后提交,之后我还想为滑块实现此功能。
我的javascripts资产上有jQuery Mobile库,并通过application.js文件中的//= require_tree .
行加载它。
答案 0 :(得分:0)
我对此无效的解释是,在调用.submit()
并将表单设置为remote: true
时,请求已发送但未触发jQuery Mobile的库重新加载,如预期的那样一个AJAX电话。
注意:请记住在加载jQuery之后但在加载jQuery Mobile之前附加mobileinit处理程序,因为该事件是作为jQuery Mobile的加载过程的一部分触发的。
我认为提交无限制(不确定原因)用于范围滑块的div
并且没有再次绑定,因为它没有重新加载库。
无论如何解决这个问题的方法是在父元素上调用.trigger("create")
来重新附加小部件。
关于.trigger()
:
描述:执行附加到给定事件类型的匹配元素的所有处理程序和行为。
感谢@Omar的帮助,也请考虑将此问题视为重复:jquery mobile trigger create method