2

form タグの外側にある送信トリガーを使用して Rails フォームを送信しようとしています。だから私は私のフォームを持っています:

<% remote_form_for Package.new, 
:url => { :action => :rate_shop, :ids_sales_order_id => params[:ids_sales_order_id],
:id => @shipment.id }, :loading => '$("#loading").overlay({api: true}).load(); ' + visual_effect(:appear, 'priceShopInProgress'), 
:complete => visual_effect(:fade, 'priceShopInProgress', :duration => 2), 
:update => 'itemSelection' do |f| %>

そして、私は私のjQueryを持っています:

$('#priceSelectSubmit').click(function() {
  $('#new_item').submit();
});

そして私のトリガー:

<%= submit_tag :Submit, :value => 'Select item', :id => 'priceSelectSubmit', :name => 'priceSelectSubmit' %>

これが取引です。送信ボタンはフォームを正しく送信します (そしてすべての適切なデータを含む新しいページをロードします) が、ボタンがフォームタグ内にある場合のようにフォームを起動しません (特に :loading は非常に重要です)。そのAJAX応答とロードするオーバーレイなどが必要です。

私の制約:

  • Rails で jQuery を使用する必要がある
  • 送信ボタンはフォーム内に配置できません
  • 私はこれのメイン プログラマーではないので (彼は atm を使用していません)、フォームを正しく起動するために jquery を微調整するだけなのか、それとも「アクション」のものを移動する必要があるのか​​ わかりません。 form タグを jquery 関数に挿入します。何かご意見は?非常に感謝しています!
4

2 に答える 2

2

わかりましたので、繰り返しグーグルで調べました。そして、私を正しい道に導いてくれたタッドマンに感謝します!

$('form').trigger('onsubmit')

これが、jQuery を使用して、ユーザーが送信をクリックしたかのようにフォームを送信できるようにする方法です。

于 2010-03-03T22:00:51.813 に答える
0

代わりにonsubmit()呼び出しを使用してみてください。

$('#priceSelectSubmit').click(function() {
  $('#new_item')[0].onsubmit();
});

onsubmit関数は、ユーザーアクションを介してフォームを「送信」するときに呼び出されますが、通常、フォームでsubmitメソッドを直接呼び出すとバイパスされます。

生成された実際のHTMLを表示すると、onsubmit="..."ブロック内で行われたAjax呼び出しを確認できます。

編集:jQueryプロキシオブジェクトの参照を解除するように修正されました。

于 2010-03-03T21:11:14.723 に答える