在提交远程bootstrap模态rails表单之前触发js

时间:2016-01-07 18:35:55

标签: javascript jquery ruby-on-rails ajax forms

我有一个rails4应用程序。我正在尝试使用内置的AJAX机制(respond_to format.js和create.js.erb)进行远程提交,但在我提交表单之前,我想通过js稍微更改代码以将正确的UTC时间保存到db 。

一切正常,直到最后一行,因此默认行为被认可,时间用momentjs正确格式化,但表格最终没有提交。这个$('#new-task-modal-form').submit();行有问题吗?我还能错过什么?

形式

<%= form_for([current_user, @task], remote: true, id: "new-task-modal-form") do |f| %>
....
....
<%= f.submit "Create Task", class: 'btn btn-primary new-task-submit', "data-sid" => current_user.id, "data-rip" => :executor_id %>

JS

var ready = function() {

  $('.new-task-submit').on('click', function (e){
    e.preventDefault();
    var localMoment = moment($('.new-task-deadline').val());
    $('.new-task-deadline').val(localMoment.toISOString());
    $('#new-task-modal-form').submit();
  });

$(document).ready(ready);
$(document).on("page:load", ready);

我也是这样尝试的,所以偶然不能成为问题:

var ready = function() {

  $('.new-task-submit').on('click', function (e){
    e.preventDefault();
    $('#new-task-modal-form').submit();
  });

$(document).ready(ready);
$(document).on("page:load", ready);

2 个答案:

答案 0 :(得分:1)

这是一个引导模式问题。这很奇怪,但我不得不在模板上调用提交函数而不是在轨道表单上:$('#newtask').submit();

<%= form_for([current_user, @task], remote: true, class: "new-task-modal-form") do |f| %>
<div class="modal fade" id="newtask" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">

答案 1 :(得分:0)

试试这个:

  $('.new-task-submit').on('submit', function (e){
    e.preventDefault();
    var localMoment = moment($('.new-task-deadline').val());
    $('.new-task-deadline').val(localMoment.toISOString());
    this.submit();
  });

归功于lonesomeday https://stackoverflow.com/a/4517383/2898941