2011-02-04 11 views

Odpowiedz

5

Właśnie próbowałem tego co zdecydowanie działa, jeśli formularz ma zdalny => true, po prostu usunąć atrybut danych, zdalny do składania zwykle w/javascript tj

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

Zgaduję przeciwnego prawdopodobnie pracować czyli jeśli formularz nie posiada zdalnego => true tylko zrobić

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

Jeśli używasz jQuery można zrobić coś takiego mieć formę auto-post keyUp zdarzeń lub uproszczenie go wywołać ręcznie:

$(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; 
    }); 
}); 
3

może u może spróbować tego:

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

To będzie przesłać formularz normalnie, bez wyzwalania format.js. –

33

jestem jakoś do tego nowego, ale tu idzie ...

rails.js jQuery (przynajmniej jeden) określa następującą funkcję złapać i składania formularzy:

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

Jeśli użyć następującego powinno wywołać tę samą funkcję (a jeśli remote => true, to przyzwyczajenie powoduje przeładowanie strony):

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

Tak więc, jeśli chcesz, aby przesłać na przykład na wybranej zmianie, możesz ustawić powyższe wywołanie wyzwalacza na wybrane: onchange wyobrażam sobie.

+0

Aktualizacja: przetestowana i działa. – Karl

+4

To powinna być poprawna odpowiedź. –

+0

Oto odpowiedź, na którą patrzyłem "Jak wywołać zdalne przesyłanie formularzy za pomocą javascript" – stream7

1

W Rails 5 (który zastępuje jQuery ujs z Rails ujs), jest to, w jaki sposób wyzwolić szyn procedury obsługi przywiązuje się do formy na submit zdarzenie:

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

(Holy cow zajęło mi wieki, aby dowiedzieć się, że!)

Powiązane problemy