1. ホーム
  2. javascript

入力フィールドが1つのフォームで、入力時にEnterキーを押したときに送信されるのはなぜですか?

2023-08-10 15:50:08

疑問点

なぜ <form> が一つで <input> フィールドは、ユーザーが値を入力し を押すとフォームを再読み込みします。 の中に2つ以上のフィールドがある場合は再読み込みされません。 <form> ?.

を書きました。 簡単なページ を書き、この奇妙さをテストしてみました。

2番目のフォームに値を入力してEnterキーを押すと、入力された値を渡してページをリロードするのがわかりますが、これはあたかも GET .なぜですか、そしてどうすればそれを避けることができますか?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>testFormEnter</title>
</head>
<body>
<form>
  <input type="text" name="partid2" id="partid2" />
  <input type="text" name="partdesc" id="partdesc"  />
</form>
  <p>2 field form works fine</p>
<form>
<input type="text" name="partid" id="partid"  />
</form>
<p>One field form reloads page when you press the Enter key why</p>
</body>
</html>

どのように解決するのですか?

これは、しばらく前から出ている、あまり知られていない "Quirk" です。 いくつかの人々がさまざまな方法でそれを解決していることを知っています。

私の意見では、最も簡単なバイパスは、ユーザーに表示されない 2 番目の入力を単に持つことです。 バックエンドではそれほどユーザー フレンドリーではありませんが、この問題を解決するために機能します。

私がこの問題について聞いた最も一般的な場所は、特に IE であり、FireFox やその他ではないことに注意する必要があります。 しかし、それらにも影響するようです。