jQuery + form_remote + dialog

Mam takie coś:

[code=_editor.erb]


<% form_remote_for(editor, :url => {:action => @next_action, :id => editor.id }, :method => :post, :id=>“form_edit”) do |f| %>
<%= f.error_messages %>
<%= f.hidden_field :id %>
















Nazwa <%= f.text_field :name %>
Skrót <%= f.text_field :code %>
Miejscowość <%= f.text_field :city %>
<%= f.submit ‘Zapisz’, :id=>“submitbtn” %>

<% end %>
[/code]
Jest to formularz renderowany przez żądanie ajaksowe (w pliku rjs mam page.replace_html "overlay_hook", render(:partial=>"editor", :object=>@company)
).
Okienko dialogowe się pojawia, problem w tym, że chciałbym użyć standardowego przycisku okna dialogowego do wywołania ajaxowego submita formularza (przypięte zdarzenie onsubmit). Wolałbym uniknąć renderowania przycisku Zapisz (f.submit “Zapisz”). Jakieś PROSTE wyjście?

Eksperymentuję sobie z jQuery, ma kilka fajnych kontorlek (masked input text), któr e przydałyby się w mojej aplikacji.

Nie wiem, czy dobrze zrozumiałem Twój problem. Jeśli chcesz wysłać formularz nie używając przycisku submit, wystarczy ręcznie wywołać na nim zdarzenie submit:

$("#form_edit").submit()

Powyższy kod może zostać wywołany po kliknięciu w “standardowy przycisk okna dialogowego”.

O ile zauważyłeś mam w definicji okienka dialogowego coś taiego:

"Zapisz": function() { $(this).dialog("close"); $('form:first').submit(); },
Niestety formularz nie wykonuje się ajaksowo, pojawia mi się biała strona z HTMLem + kodem JS (jakby ktoś przez h() przepuścił). Metoda create kontrolera:

# POST /companies.xml def create @company = Company.new(params[:company]) @next_action = :create respond_to do |format| if @company.save format.js { render :update do |page| # todo highlighting CompaniesController.reload_companies_list page#, :highlight => Company.find(@company.id) end } else format.js { render :action=>:editor } end end end
Dodam tylko, że przycisk zapisz wygenerowany helperem (?) f.submit “Zapisz” działa prawidłowo.

Faktycznie, nie zauważyłem - trochę ciężko się czyta ten kod. Wywołanie submit() nie wysyła formularza Ajaksem, a standardowym zapytaniem. Jeśli chodzi Ci o to, żeby wysłać formularz Ajaksem, to musiałbyś ręcznie wywołać $.post z odpowiednio przygotowanymi parametrami, lub wykorzystać PROSTE rozwiązanie: http://www.google.pl/search?q=jquery+ajax+submit

Dzięki wielkie. Wczoraj w nocy nawet podobne zapytanie do google’a dałem, ale nie potrafiłem wykorzystać. Zaciemnienie. Użyłem tego plugina z pierwszego wyniku wyszukiwania, do teog zrezygnowałem z RJSów. Uzyskałem pożadany efekt :wink:
Jeszcze męczę się z przepchaniem idka do taga formularza, ale to dam radę.

Pozdrawiam!