2

動作してform_for(:remote=>true)いますが、送信する前に通常のJavaScript確認ボックスを表示したいと思います。

これを達成する方法はありますか?理想的には、次のようなもので送信のキャンセルを受け入れる、ある種の:beforeまたは:onsubmit:return confirm("Are you sure?");またはおそらくjavascriptイベントフック?

ありがとうございました

4

1 に答える 1

12

オプションでこれを簡単に行うことができますconfirm

<%= for_form @my_thing, remote: true do |f| %>
  <%= f.text_field :my_value %>
  <%= f.submit 'Submit', confirm: 'Are you sure?' %>
<% end %>

これをシームレスに機能させるには、 Rails UJSドライバー(新しいRailsプロジェクトではデフォルトで有効になっています)を使用する必要があります。

必要に応じてアクセスできるフォーム送信ライフサイクルへのフックもあります。

  • ajax:beforeSend-XHRリクエストが行われる前にトリガーされます。falseを返すと、リクエストがキャンセルされます
  • ajax:success-サーバーからの応答が成功するとトリガーされます
  • ajax:error-サーバーからのエラー応答でトリガーされます
  • ajax:complete-サーバーからの成功またはエラー応答のいずれかでトリガーされます

confirmしたがって、例として、次のようなコードでフォームヘルパーオプションを模倣できるはずです。

$("#my_remote_form").on('ajax:beforeSend', function() {
  return confirm("Are you sure?");
});
于 2012-11-10T19:05:41.013 に答える