2012-03-28 9 views
6

これは非常に基本的な質問ですが、私はそこにいる誰かが理由を知っていると確信しています。 HTMLでは、ボタン要素を単独で作成し、それを与えないと、onclickとjQueryはありません.click()ボタンは何もしません。完璧。しかし、これを行うと、<form>要素内のボタンを押すと、すべてのフォーム要素のGETデータを自分のウェブサイトのルートアドレスに送信しようとしますか?なぜそれをやっているのですか?私はそれを提出ボタンにしたり、そのフォームにmethodまたはactionを定義していませんでしたか?HTMLフォームのボタンでデータが送信されるのはなぜですか?

事前にお知らせください!

**編集**

これは私が問題を解決するために行ったことです。 <form>のボタンの場合は、次のようにします。

<button type="button"></button> 

デフォルトでは何も行いません。

+0

私はこれも知りたいです。個人的には、ボタンはボタンでなければならず、 'input [type = submit]'要素は実際にフォームを提出する必要があります... –

+0

そのa * by-desgin *機能。 –

+0

私はその質問を理解しているか分からない。ボタンは物事を起こすためのメカニズムです。だから何もしないボタンのポイントは何ですか?また、フォーム機能を必要としない場合は、なぜ「」を使用しますか?ところで、 'method'はオプションで、デフォルトは' GET'です。 'location'は属性ではありません。 –

答えて

9

それぞれのMDNエントリでわかるように、ボタン要素のtypeプロパティのデフォルト値はsubmitです。したがって、省略したり、buttonまたはresetに変更しないと、デフォルトの動作が開始され、フォームが送信されます。

<form action=""> 
    <button type="button">Nothing will happen</button> 
    <button>Form gets submitted</button> 
</form> 
+0

私はそれがなぜ提出するのか知っていましたが、理由はありません。リンクありがとう。 – kontur

+0

私は、おそらくそれが一日でコードを簡単にすることを試みることから来ている理由はないと思います...多分。 –

+0

@jeffery_the_wind私は初期の段階で意図された使用はフォームを提出するだけだったと思います。当時、追加の 'type'プロパティは必要ありませんでした。後でこれが必要になりましたが、下位互換性を保つために、デフォルトの型は 'submit'のままでした。ちょうど私の考え - これについての言及はありません。 – Sirko

0

これは、サーバー側でWHICHボタンが押されたことを時々知る必要があるため、このように設計されています。ボタンなしのボタン機能が必要な場合は、スタイリングされたAタグを使用します。

0

ボタンはフォームのサブミットコントロールとして扱われますが、その理由はわかりません。

ルートに投稿される理由は、actionを指定していないため、デフォルトが使用されているためです。

GETを使用した理由は、デフォルトのmethodです。

これを防ぐには、onclickの末尾にreturn false;を追加します。

4

私はそれ

<button>要素がa type attribute. The default value is submitを持って送信ボタンしませんでした。フォームを送信したくない場合はtype="button"に設定してください。そのフォーム上GET

又は場所に

あるいは定義方法

methodデフォルト?

actionデフォルトは現在のURIです。

関連する問題