質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2081閲覧

入力フォームを閉じるとpostが飛んでしまう

d0ne1s

総合スコア32

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/12/08 06:03

編集2018/12/08 06:06

「追加」ボタンを押すとポップアップのような形で画面中央に入力フォームが作成される仕組みを作っています。

入力したデータの送信は問題なくできているのですが、何も入力をせずに、右上の「閉じる」ボタンを押してフォームを非表示にした際にもPOSTが送信されてしまいます。

原因が全くわかりません。

どなたかお力を貸してください。

ソースは以下のようになります。

html

1<!--フォームを表示するボタン--> 2<button onClick="form_open();" type="button" class="btn">追加</button> 3 4<!--フォーム--> 5<div id="form" style="display: none;"> 6 <form method="post" action="mc_detail.php?mc_id=<?php print $mc_id; ?>"> 7 <h2>情報追加</h2> 8 <textarea name="data"></textarea> 9 <input type="submit" class="btn"> 10 <button onClick="close();" class="btn">閉じる</button> 11 </form> 12</div>

Javascript

1function form_open(){ 2 document.getElementById("form").style.display = "block"; 3} 4 5function close(){ 6 document.getElementById("form").style.display = "none"; 7}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

type属性をつけましょう。

HTML

1<button type="button" onClick="close();" class="btn">閉じる</button>

<button>: ボタン要素 | MDN】
https://developer.mozilla.org/ja/docs/Web/HTML/Element/button#attr-type

type

ボタンの種別。以下の値を指定可能です。
  • submit: 自身が属するフォームのデータをサーバーに送信するボタンとなります。これは type 属性が指定されていない場合、もしくは属性値が動的に空にされたり不正な値にされた場合の既定の動作です。
  • reset: ボタンに紐づけられたフォームコントロールの値をすべて初期値に戻すリセットボタンになります。
  • button: type 属性に button を指定したボタンには、既定の動作はなく、クリックするなどしても何も起こりません。クライアントサイドスクリプトで要素にイベントを設定することにより、操作時の挙動を設定することができます。

投稿2018/12/08 06:09

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

d0ne1s

2018/12/08 06:35

回答ありがとうございます。 早速試してみましたが、今度はjavascriptが発火せず、閉じるボタンを押しても何も反応しない状態になりました。 また、デベロッパーツール上には何のエラーも表示されませんでした。
d0ne1s

2018/12/08 06:50

できました!ありがとうございます! ただ、関数の名前を変えると上手くいく理由がわかりません。 分かる範囲で構いませんので、ご説明いただけると非常に助かります。
d0ne1s

2018/12/08 07:17

なるほど。そのメソッドは知らなかったです。 今後、汎用性のある1単語の関数名はつけないようにしようと思います。 勉強になりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問