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

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

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

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

218閲覧

htmlでテキストを書いてエンターしたときと、ボタンをクリックしたときで、別の内容を受けとりたいです。

cancat

総合スコア313

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/08/14 08:59

こんにちは。
Windows10でweb serverのアプリケーションを開発しています。

###前提・実現したいこと
htmlでテキストを書いてエンターしたときと、ボタンをクリックしたときで、別の内容を受けとりたいです。

###該当のソースコード

html

1<html><body> 2<form action='test.cgi' method='post'><input type='text' name='name' style='font-size:5em;'> 3<button type='submit' name='name' value='next' style='font-size:3em;'>next</button> 4<button type='submit' name='name' value='stop' style='font-size:3em;'>stop</button> 5</form> 6</body></html>

###試したこと
このコードだと、サーバー側で受けたときに、name='テキストボックスの文字列'&name='next'&name='stop'となります。

###発生している問題・エラーメッセージ
テキストに入力している場合とそれ以外は区別できますが、nextとstopは区別できません。
このそれぞれ、つまりテキストに入力しているとき、nextボタンを押したとき、stopボタンを押したときの3通りを区別するには、htmlをどのように書けばよいですか?

よろしくお願いします。

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

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

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

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

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

othersight

2017/08/14 09:27

一点だけ確認したいのですが、`name=next`と`name=stop`の両方が付いてくる場合はありますか? 手元で試してみる限りでは、この2つの両方が同時に付いてくることは無いようなのですが。
cancat

2017/08/14 09:33

ほんとだ。失礼しました。チェックありがとうございます。 nextとstopは別立てで動いてました。 ということは、テキストボックスでエンターを押した場合と、それ以外とを区別できればそれでオーケーということになります。 よろしくお願いします。
guest

回答1

0

ベストアンサー

まず、入力データとボタンを区別するために、<input><button>とでname="..."の値を分けたほうが良いと思います。

また、<input type='text'>等でエンターした時の挙動は、同じ<form>要素内にあるsubmitボタン相当のもの(<input type='submit'>もしくは<button type='submit'>)のうち最初に書かれたものがクリックされたのと同じ扱いの挙動となるため、上記のコードだとvalue=nextのボタンをクリックした場合と同じ扱いになってしまいます。

このため、エンターした時とname='next'のボタンをクリックした時を区別するために何かの工夫が必要になります。あくまでも一つの案ですが、例えば、<button name='text'>のボタンの前に、目に見えないボタンを一つ加える等の細工をする方法が考えられます。

js

1<html><body> 2<form action='test.cgi' method='post'><input type='text' name='name' style='font-size:5em;'> 3<button type='submit' name='submitbutton' value='enter' style='position:absolute;visibility:hidden;pointer-events:none;bottom:0;right:0;'>next</button> <!-- 見えないボタン(エンターで入力された場合に反応) --> 4<button type='submit' name='submitbutton' value='next' style='font-size:3em;'>next</button> 5<button type='submit' name='submitbutton' value='stop' style='font-size:3em;'>stop</button> 6</form> 7</body></html>

この場合、

  • テキストに入力された内容はnameの中身を確認すればよい
  • どのボタンがクリックされたかはsubmitbuttonの中身を確認すればよい

といった感じになります。特に、submitbutton=enterであれば、エンターによって入力された場合だと区別できるかと思います。

投稿2017/08/14 10:22

編集2017/08/14 10:30
othersight

総合スコア356

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

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

cancat

2017/08/14 11:32

ありがとうございます。できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問