1

複数のフォームがあるページがあります。これらのフォームはデータ属性data-remote="trueを 使用しているため、Rails jquery-ui-rails.js はイベントを自動的に追加してこれらのフォームを JavaScript 経由で送信します。

ユーザーがこれらのフォームのいずれかを送信するときに、クラスを追加して、必要に応じてスタイルを設定できるようにしたいと考えています。Rails は自動的に ajax ハンドラーを追加してフォームを送信するため、ハンドラーが追加された時点でこのクラスを追加することはできません。このためのコードを自分で手動で追加する必要があります (と思います)。

次のコードは私の最初の試みでした。これは問題なく接続されますが、ajaxStart はグローバル イベントであるため、ページ上のすべてのフォームに対して同時にトリガーされます。

$('form').ajaxStart(function(e) {
  console.log("element is " + ($(e).attr('id')));
  return $(e).addClass('submitting');
})

http://docs.jquery.com/Ajax_Eventsによると、これはローカル イベントであり、関連する唯一のイベントのようです。

$('form').beforeSend(function(e) {
  console.log("element is " + ($(e).attr('id')));
  return $(e).addClass('submitting');
})

ただし、これによりエラーが発生します。

Uncaught TypeError: Object [object Object] has no method 'beforeSend' 

このイベントを自分のページのすべてのフォームにアタッチして、ajax 送信ごとに 1 回、送信中の現在のフォームに対してのみ発生させるにはどうすればよいですか?

4

1 に答える 1

2

ajax:beforeSend.railsイベントを使用できると思いますajax:complete.rails

https://github.com/rails/jquery-ujs/blob/8b147fb023f0d13deebea750e7e9827b6d3bc8ba/src/rails.js#L405

于 2012-08-21T19:36:23.737 に答える