首页 > 解决方案 > 复选框更改事件仅在重新加载页面后触发

问题描述



 我正在使用 Ruby on Rails 编写一个应用程序,我有一个表单,如果选中了一个复选框,它会显示某个<div>,如果不是,我会style="display:none:"通过 rails 添加。通过 Coffeescript 和 JQuery,我也可以在更改时进行相同<div>的切换。

咖啡脚本:

jQuery ->
  $(document).ready ->
    $("#hasUser").change ->
      $("#userPart").toggle();
      return
    return
  return

HTML:

    <div class="form-group">
        <%= contato_form.label :hasUser, :class => 'inline-checkbox' do %>
          Possui usuário <%= contato_form.check_box :hasUser, :id => 'hasUser' %>
        <% end %>
    </div>
</div><!-- Closing from uncopied code -->
<div id="userPart" class="findMe" <% if @contato.usuario.id.blank? %> style="display:none;" <% end %>>
  <h2> Usuário: </h2>
  <div class="container">
    <%= contato_form.fields_for :usuario do |usuario_form| %>
      <%= render partial: 'usuarios/campos_usuario', locals: {form: usuario_form} %>
    <% end %>
  </div>
</div> 


这里的问题是,当我使用 to 表单时它运行良好Create,但在EditCoffeescript 上仅在重新加载后运行。

标签: javascriptjqueryruby-on-railscoffeescriptruby-on-rails-5

解决方案


这是一个涡轮链接问题。在尝试运行其余代码之前,我必须检查是否正确加载了 turbo-links。

jQuery ->
  $(document).ready ->
    $(document).on 'turbolinks:load', #Added line
      $("#hasUser").change ->
        $("#userPart").toggle();
        return
      return
    return
  return

推荐阅读