0

在 Rails 3.2 中,我正在尝试提交一个表单,该表单具有一个先前使用 ajax 添加到此表单的选择字段。像这样:

  1. 第一个表单 (has :remote => true) 以 js.erb 响应,它(除其他外)在另一个表单中呈现一个选择字段,如下所示(选择字段在部分中):

    $('#target_variables_div').html("<%= j render(:partial => 'logged_data/select_vars', :locals => { :vars => @vars, :date => @date }) %>") 
    
  2. 这个“另一个”表单(也有:remote => true)有更多的表单字段,但是这些是在页面加载时静态加载的。

问题是当我提交这个“另一个”表单时,它只发送静态参数,不包括先前加载部分的选择字段。

我知道它与 jQuery 有关live,或者on我仍然无法提交完整的表单......

谢谢你的帮助!

4

2 回答 2

0

Jqueryliveon方法用于侦听dom页面上新添加的元素,例如第一次加载时不存在但动态添加的按钮,并且需要附加一个事件,例如:

$('#dinamyc_button').on('click', function() {});

在您的情况下,我相信您将不得不手动设置选择值。尝试为您的表单创建一个侦听器,在提交时会将选择值附加到您的数据以传递给服务器:

$('#your_form').submit(function() {
  var formData = $(this).serialize();
  var selectValue = $('#your_select').val();
  formData['select'] = selectValue; // or formData.select = selectValue;
  $.ajax({
    type: 'POST',
    url: whatever,
    data: formData
  })
});

这只是一个不完善的例子,但你明白了。

于 2013-02-27T12:05:27.980 回答
0

多亏了 MurifoX,我终于设法完全提交了表单。以前我在加载 DOM 后运行提交块(jquery ->在我的 CoffeeScript 文件中的块内)。结果 CoffeeScript 是:

$('#generate-button').on "click", (e) ->
  e.preventDefault()
  formData = $(this).parents("form").serialize()
  selectValue = $('#select_vars_field').val()
  $.ajax
    type: 'POST',
    url: '/logged_data/get_chart',
    data: formData + "&vars=" + selectValue 
于 2013-02-27T13:32:47.597 回答