Подтвердить что ты не робот

Rails 3: Как вызвать отправку формы через javascript?

У меня есть форма, которая по большей части просто представляет собой обычную форму, поэтому я не хочу устанавливать в form_tag параметр: remote = > true.

Однако при определенных обстоятельствах я бы хотел, чтобы функция javascript опубликовала форму, как если бы она была отправлена: remote = > true. Что мне нужно сделать в javascript для этого?

4b9b3361

Ответ 1

Я просто пробовал это, что определенно работает, если форма имеет remote = > true, просто удалите атрибут data-remote для отправки обычно w/javascript, т.е.

$('input').click(function(){ $('#form').removeAttr('data-remote') });

Я предполагаю, что противоположное, вероятно, сработает, т.е. если у формы нет remote = > true, просто сделайте

$('input').click(function(){ $('#form').attr('data-remote',true)});

Ответ 2

Я новичок в этом, но здесь идет...

rails.js(по крайней мере, jquery) определяет следующую функцию для поиска и отправки форм:

$('form').live('submit.rails', function(e) { ... });

Если вы используете следующее, он должен запускать ту же функцию (и если: remote = > true, то это не вызовет перезагрузку страницы):

$("#<yourformid>").trigger("submit.rails");

Итак, если вы хотите, например, отправить свою форму на выбранное изменение, вы можете установить вышеуказанный триггерный вызов на select: onchange, который я мог бы себе представить.

Ответ 3

Возможно, вы могли бы попробовать следующее:

$('#form').submit();

Ответ 4

Если вы используете jQuery, вы можете сделать что-то вроде этого, чтобы иметь автозапуск формы при событиях keyup или упростить его для запуска вручную:

  $(function() {    
    $("#live_search input").keyup(function() {
        q = $('#search_text').val();
      $.ajax({
          beforeSend      : function(request) { request.setRequestHeader("Accept", "text/javascript"); },
                           // Included so Rails responds via "format.js"
          data          : 'query=' + q,
          success       : function(data, textStatus, XMLHttpRequest) {
                                // alert(textStatus);
                                $("#live_search #results").html(data);
                                },
          error         : function(XMLHttpRequest, textStatus, errorThrown) {
                                // alert(errorThrown);
                                $('#annotation_dialog').html(XMLHttpRequest.responseText);
                                },
          type            : 'POST',
          url                 : '/search/live'
      });
      return false;
    });
});

Ответ 5

В Rails 5 (который заменяет jquery-ujs на rails-ujs), это то, как вы запускаете рельсы обработчика, прикрепляясь к форме submit event:

var elem = document.getElementById('myform') // or $('#myform')[0] with jQuery
Rails.fire(elem, 'submit');

(Святая корова потребовала меня навсегда, чтобы понять это!)