我有很多带有check_box元素的动态创建表单(form_for)。我需要创建一个单击提交。当我点击一个复选框时,它会在页面上提交第一个表单,而不是当前的点击表单。如何提交当前点击表单?
<%= form_for todo, url: update_todos_path, remote: true, html: { id: 'todo_status'} do |t| %>
<%= t.text_field :id %>
<%= t.check_box :isCompleted, {}, 'false', 'true' %>
<div class='checkbox_text'>
<%= todo.text %>
</div>
我用于静态表单的jQuery代码:
$('.checkbox_text').click(function (event) {
$('#todo_status').submit();
});
另外,如何在没有:id
的情况下将t.text_field
放入参数?
答案 0 :(得分:0)
如果checkox位于表单内部且之间没有元素,则只需要检查复选框的父级:
$('.checkbox_text').click(function (event) {
$(this).parent().submit(); // $(this).parent() would return the form itself
});
当您将id放入元素时,这意味着它是唯一的。你不能在dom中有很多具有相同id的元素,希望能够选择所有这些元素。
答案 1 :(得分:0)
您可以尝试使用$(selector).closest()从文本中获取表单。
$(document).on('click','.checkbox_text',function (event){
$(this).closest('#formId').submit() // You can use class name also like('.formClass')
})