0

フォーム通貨に対して完全に機能する form_remote があります。私が加えたい唯一の変更は、選択ボックスの送信ボタンを廃止することです。したがって、正しい通貨をクリックするだけで、ajax リクエストが送信されます。

<%= collection_select(:currency, :set, Currency.find(:all, :conditions => 'primary_source = "ECB"'), :code, :pretty_name, { :selected => session[:currency] }, { :onchange => "$('currency').submit()" } )  %>

onchange は select に対して機能しますが、リモート ajax リクエストを使用する代わりに、ページ全体を更新します... 1 つの要素だけではなく、remote_tag を開始して、submit をクリックするのと同じことを行うにはどうすればよいですか?

4

1 に答える 1

1

あなたが抱えている問題は、フォームの onsubmit 属性で、Rails が remote_form_for をインライン Ajax メソッドとして実装していることです。問題は、$('form').submit() を呼び出してではなく、ユーザーが物理的にフォームを送信したときにのみ送信イベントが発生することです。実際、一部のブラウザではイベントが発生する可能性がありますが、他のブラウザでは発生しないと思います。いずれにせよ、あなたが発見したように、これは一般的なケースでは機能しません。

考えられる回避策の 1 つは、これを Firefox 3.5 でしかテストしていないため、結果が異なる場合がありますが、属性を関数として直接呼び出すことです。だからあなたの :onchange の中に入れてください:

$('currency').onsubmit()

それがうまくいかない場合は、生成されたソースを見て、AJAX リクエストを onsubmit 属性から引き出して、直接呼び出すことができるスタンドアロン メソッドに入れる必要があるかもしれません。

私の知る限り、ネイティブ イベントを確実に発生させるクロス ブラウザの方法はありません。

于 2009-10-15T17:33:13.923 に答える