web-dev-qa-db-ja.com

フォームで実際にアクションが必要ですか?

ここでは、それが必要だと言っています

http://www.w3schools.com/tags/att_form_action.asp

しかし、アクション属性を指定しなくてもフォームが送信され、現在のページにフォームが送信されます。これはまさに私が望むものです。

34
Alex

要件はstandardsのみです。ページでやりたいことが何であれ、標準に従わないことは完全に可能です。それを行うと、物事が正しく表示または機能しない場合がありますが、おそらくそうなります。目標はそれらに従うことであり、あなたがそれらに従うなら、あなたのページはalways work;何も心配する必要はありません。

はい、フォームは必須です。HTML4にアクション属性があります。設定されていない場合、ブラウザはおそらく空の文字列を提供するのと同じ方法を使用します。本当に設定する必要がありますaction=""これは完全に有効なHTML4であり、標準に従い、まったく同じ結果を達成します。

HTML5では、送信ボタン自体で実際にアクションを指定できます。存在しない場合は、フォームのアクションを使用し、設定されていない場合はデフォルトで空の文字列になります(HTML5ではアクションを空の文字列に明示的に設定できないことに注意してください)。

47
animuson

HTML4仕様ではそれが必要です のように見えます。一部のブラウザは、「物事を簡単にする」ためにあなたがしたいことをしていると思います。頼ることはお勧めしません。未定義の動作なので、ブラウザはactionなしでフォームが送信されたときに何もしないことを合理的に決定できます。

アクションを空白のままにしておくことで、仕様に従っている間、必要な動作を得ることができます(相対的なので、空白は現在のページを意味します)。

<form action="" ...>

Bazmegakapaで述べたように、HTML5仕様 action属性を必要としないようです

Actionおよびformactionコンテンツ属性、指定されている場合、値はスペースで潜在的に囲まれた有効な空でないURLである必要があります。[強調を追加]

興味深いことに、これはHTML5では<form action="">は有効ではありませんが、動作するためにアクションのないフォームが必要かどうかは明確ではありません(現在のページに送信する)。

14
Brendan Long

技術的にはHTML 4仕様に違反していますが、アクションが指定されていない場合、すべてのブラウザーは応答の発信者にポストバックします。それに頼るのは賢明な考えではないが、うまくいくことは同意するだろう。

編集:この質問はHTML 5としてタグ付けされていることが指摘されているように:HTML 5では、アクション属性が不要になりました: http://www.w3schools.com/html5/att_form_action.asp これはHTML 5仕様に準拠しています。

5
swannee

//スレッド復活アラート

アニメソンの答えを拡張するには...

すべてのボタンformactionおよびフォームaction属性が評価された後、「アクション」がまだである場合はを「空」として評価します文字列」、次にHTML5.2仕様セクションから 4.10.21. ポイント8の状態:

Actionが空の文字列の場合、actionをフォームドキュメントのドキュメントのURLにします。

フォームの提出に関しては、それがあなたの望んだことです。

2
Neil Moss