我的视图中有一些选择元素应该在用户从下拉列表中选择项目后触发。
我的选择看起来像这样:
<%= collection_select(:project, :id, projects, 'id', 'name', { },{:style => "width:150px", :onchange => "document.getElementById('project_btn').click()" }) %>
<span class="control_button_light" style="display:none;"><%= submit_tag 'jump_to_project', :id => "project_btn" %></span>
<%= observe_field("project_id", :frequency => 1, :function => "document.getElementById('project_btn').click()") %>
问题是observe_field函数在select失去焦点之前触发。换句话说,即使用户尚未从下拉列表中选择,也会在select获得焦点后1秒钟“单击”提交元素。
任何人都知道如何延迟观察者点击提交,直到选择失去焦点?
答案 0 :(得分:0)
试试这个。
<%= observe_field("project_id", :frequency => 1, :function => "submit_it") %>
<script>
function sumbit_it{
setTimeout(function() { $('project_btn').click(); }, 1250);
}
</script>
在重新阅读问题后,我认为您不需要observe_field,因为您已经为该字段进行了更改。