Здесь обсуждается сразу несколько тем. Попробуем уточнить.
1. Ваш непосредственный интерес:
( Почему кнопка ввода не работает при нажатии ENTER? )
Используйте кнопку типа submit .
<input type="submit".../>
.. вместо
<input type="button".../>
Ваша проблема не имеет ничего общего с использованием атрибута onclick . Вместо этого вы не получаете желаемого поведения, потому что вы использовали тип ввода button , который просто не ведет себя так, как кнопки отправки.
В HTML и XHTML для некоторых элементов есть поведение по умолчанию. Кнопки ввода на формах часто имеют тип «отправить». В большинстве браузеров кнопки «отправить» по умолчанию срабатывают при нажатии клавиши ВВОД с сфокусированного элемента в том же элементе формы . «Кнопка» типа ввода нет. Если вы хотите воспользоваться преимуществами этого поведения по умолчанию, вы можете изменить тип ввода на «отправить».
Например:
<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>