ここでは、一度にいくつかのトピックが議論されています。明確にしてみましょう。
1.当面の懸念事項:
( ENTER を押しても入力ボタンが機能しないのはなぜですか? )
送信ボタン タイプを使用します。
<input type="submit".../>
..それ以外の
<input type="button".../>
あなたの問題は、 onclick属性を使用したこととは何の関係もありません。代わりに、送信ボタンと同じように動作しないボタン入力タイプを使用したため、必要な動作が得られません。
HTML および XHTML では、特定の要素に対してデフォルトの動作があります。フォームの入力ボタンは、多くの場合「送信」タイプです。ほとんどのブラウザでは、同じフォーム要素内のフォーカスされた要素から ENTER が押されると、デフォルトで「送信」ボタンが起動します。「ボタン」入力タイプはそうではありません。このデフォルトの動作を利用したい場合は、入力タイプを「送信」に変更できます。
例えば:
<form action="/post.php" method="post">
<!--
...
-->
<input type="submit" value="go"/>
</form>
2. セキュリティ上の懸念:
@Adyはセキュリティ上の懸念について言及しました。javascriptでログインを行うことに関連するセキュリティ上の懸念が山ほどあります。これらはおそらくこの質問のドメイン外です。特に、特に心配していないことを示しているため、ログイン方法が実際には location.href を新しい html ページに設定しているだけであるという事実 (おそらく、実際のセキュリティメカニズムが整っていない可能性があります)。
誰かがそれらの質問に直接興味を持っている場合は、それを掘り下げる代わりに、 SOに関する関連トピックへのリンクを次に示します。
3. その他の問題:
これは、コードの簡単なクリーンアップです。これは、いくつかのベスト プラクティスに従っているだけです。人々が言及したセキュリティ上の懸念には対処していません。代わりに、単にいくつかの健康的な習慣を説明するためにこれを含めています。なぜ私が何かを特定の方法で書いたのかについて具体的な質問がある場合は、お気軽にお尋ねください. また、関連するトピックのスタックを参照してください (あなたの質問は既にここで議論されている可能性があるため)。
主な注意点は、イベント属性(onclick=""、onsubmit=""、または onkeypress="") が HTML から削除されていることです。これらは JavaScript に属しており、JavaScript イベントをマークアップから除外することをお勧めします。
<form action="#" method="post" id="loginwindow">
<h3>Login to view!</h3>
<label>User ID: <input type="text" id="userid"></label>
<label>Password: <input type="password" id="pass"></label>
<input type="submit" value="Check In" />
</form>
<script type="text/javascript">
window.onload = function () {
var loginForm = document.getElementById('loginwindow');
if ( loginwindow ) {
loginwindow.onsubmit = function () {
var userid = document.getElementById('userid');
var pass = document.getElementById('pass');
// Make sure javascript found the nodes:
if (!userid || !pass ) {
return false;
}
// Actually check values, however you'd like this to be done:
if (pass.value !== "secret") {
location.href = 'failure.html';
}
location.href = 'album.html';
return false;
};
}
};
</script>