jquery – 如何在Rails3中选中或取消选中复选框时触发ajax调用?

前端之家收集整理的这篇文章主要介绍了jquery – 如何在Rails3中选中或取消选中复选框时触发ajax调用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的Rails3应用程序中,我有一组复选框用于列出任务.我想在选中或取消选中其中一个复选框时,将ajax调用重新启动回服务器.

代码是更大形式的一部分:

  1. <% @provider.tasks_assigned.each do |task_assigned| %>
  2. <%= form_for :task_assigned,:url => { :controller => "tasks_assigned",:action => 'update' },:remote => true do |t|%>
  3. <%= t.hidden_field :id,:value => task_assigned.id %>
  4. <%= t.check_Box :provider_completed,{ :checked => task_assigned.provider_completed,:onclick => "$(this).parent().trigger('submit.rails');" } %>
  5. <%= t.label :provider_completed,task_assigned.task_desc.gsub(/(\n\r|\r\n|\n)/,'<br>').html_safe,:style => "color: #666666; margin-top: 0px;" %>
  6. <br />
  7. <% end %>
  8. <% end %>

这是生成的html:

  1. <form accept-charset="UTF-8" action="/tasks_assigned/update" data-remote="true"
  2. method="post">
  3. <div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden"
  4. value="&#x2713;" />
  5. <input name="authenticity_token" type="hidden"
  6. value="jECJ4FkV48T5EgCEE0hhPvsbWjG+WGXn59L2knMv7No=" />
  7. </div>
  8. <input id="task_assigned_id" name="task_assigned[id]" type="hidden" value="25" />
  9. <input name="task_assigned[provider_completed]" type="hidden" value="0" />
  10. <input id="task_assigned_provider_completed" name="task_assigned[provider_completed]"
  11. onclick="$(this).parent().trigger('submit.rails');" type="checkBox" value="1" />
  12. <label for="task_assigned_provider_completed"
  13. style="color: #666666; margin-top: 0px;">abc</label>
  14. <br />
  15. </form>
  16. <form accept-charset="UTF-8" action="/tasks_assigned/update" data-remote="true"
  17. method="post">
  18. <div style="margin:0;padding:0;display:inline">
  19. <input name="utf8" type="hidden" value="&#x2713;" />
  20. <input name="authenticity_token" type="hidden"
  21. value="jECJ4FkV48T5EgCEE0hhPvsbWjG+WGXn59L2knMv7No=" />
  22. </div>
  23. <input id="task_assigned_id" name="task_assigned[id]" type="hidden" value="24" />
  24. <input name="task_assigned[provider_completed]" type="hidden" value="0" />
  25. <input id="task_assigned_provider_completed" name="task_assigned[provider_completed]"
  26. onclick="$(this).parent().trigger('submit.rails');" type="checkBox" value="1" />
  27. <label for="task_assigned_provider_completed"
  28. style="color: #666666; margin-top: 0px;">Provider completed</label>
  29. <br />
  30. </form>
  31. <form accept-charset="UTF-8" action="/tasks_assigned/update" data-remote="true"
  32. method="post">
  33. <div style="margin:0;padding:0;display:inline">
  34. <input name="utf8" type="hidden" value="&#x2713;" />
  35. <input name="authenticity_token" type="hidden"
  36. value="jECJ4FkV48T5EgCEE0hhPvsbWjG+WGXn59L2knMv7No=" />
  37. </div>
  38. <input id="task_assigned_id" name="task_assigned[id]" type="hidden" value="22" />
  39. <input name="task_assigned[provider_completed]" type="hidden" value="0" />
  40. <input id="task_assigned_provider_completed" name="task_assigned[provider_completed]"
  41. onclick="$(this).parent().trigger('submit.rails');" type="checkBox" value="1" />
  42. <label for="task_assigned_provider_completed"
  43. style="color: #666666; margin-top: 0px;">a<br>b<br>c</label>
  44. <br />
  45. </form>

如果我在表单中添加一个提交按钮,它没有任何问题,但这看起来不太吸引人.

‘onclick =“$(this).parent().trigger(‘submit.rails’);”’是检查复选框时触发rails提交代码的徒劳尝试.从未找到父(表单).生成javascript错误“对象#没有方法’父级’”.

我相信我非常接近弄明白,但我显然错过了一些东西.

解决方法

在复选框中添加一个类,删除突出的onclick并使用jQuery以不显眼的方式触发表单.
  1. <%= t.check_Box :provider_completed,{:class => 'checkable'} } %>
  2.  
  3. $('.checkable').live('change',function() {
  4. $(this).parents('form:first').submit();
  5. });

猜你在找的jQuery相关文章