Javascript onsubmit=“" не работает
-
27-10-2019 - |
Вопрос
Я не уверен, что моя ошибка связана с отправкой формы самой себе через PHP, но она просто не попадает в мою функцию и отправляется в любом случае, независимо от того, что возвращается.Я не уверен, чего мне здесь не хватает.Это моя форма
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Login Page</title>
<script type="text/javascript" src="js/functions.js"></script>
<!--Internal for simplicity or until bigger page -->
<style type="text/css">
#login div{display:inline;color:red;}
input{margin-right:20px;}
</style>
</head>
<body>
<form name="login" id="login" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST" onsubmit="return CheckLogin()">
<?php if($_POST && $win == false): ?>
<div>Login Unsuccessful. Please Try Again</div><br />
<?php endif ?>
<input type="text" size="10" name="username" /><div></div>
<br />
<input type="password" size="10" name="password" /><div></div>
<br />
<input type="submit" text="Submit" />
</form>
<a href="register.php">Registration Page</a>
</body>
</html>
На самом деле я просто проверяю, пусты ли имя пользователя / пароль, но он все равно отправляется, проходя прямо через эту функцию:
function CheckLogin()
{
window.alert("made it here");
var login = document.forms["login"];
var user = login["username"].value;
var pass = login["password"].value;
if(user == null || user == "")
{
window.alert("user");
return false;
}
return false;
}
Я уверен, что это что-то глупое, чего мне не хватает, поэтому, прежде чем отправить это, я дважды проверил имена функций и посмотрел, получаю ли я какие-либо ошибки javascript, но ни то, ни другое не оказалось проблемой.Кто-нибудь видит мою ошибку?
Дело в том, что я не хочу, чтобы PHP запускался или форма отправлялась самой себе, если имя пользователя или пароль пустые или null.
Редактировать Добавлена полная html-страница без функциональности PHP.Также отметил, что по какой-то причине моя ссылка на javascript не "связывает", вместо этого я могу просмотреть ее содержимое непосредственно в заголовке, как будто оно встроено через inspect element или firebug.Возможно, это корень проблемы, но не уверен, почему.
Редактировать Добавлен doctype just incase, но по-прежнему никакой помощи.Он автоматически встраивает мой javascript на мою страницу и помещает его в CDATA, как вы обычно делаете, вместо того, чтобы фактически связывать его.Он делает это в IE, Firefox и Chrome...
если кто-то думает, что мой PHP может иметь к этому какое-то отношение, я мог бы опубликовать это, но я не вижу, как серверный код может взаимодействовать с клиентским кодом без публикации.
Решение
В вашем коде есть несколько незначительных ошибок.Прежде всего, для ввода нет атрибута с именем "text", я полагаю, что вы его пропустили :) Попробуйте сначала проверить их. Проверьте здесь чтобы увидеть атрибуты, которые могут принимать входные данные.Во-вторых, это jsfiddle пример корректно работает в Chrome и FF.Я не могу протестировать в IE, так как я использую Ubuntu.
После того, как я исправил атрибуты формы, пример в jsfiddle начал работать.Я не уверен, связано ли это с этим, но, по-видимому, это кажется мне единственным логичным объяснением того, что ваш код не работает.
Другие советы
Ваш код работает нормально.Попробуйте запустить его в другом веб-браузере.Возможно, одно из расширений, которые вы установили в своем браузере, вызывает ошибку JS (наличие Google Dictionary в Chrome вызывало у меня проблемы).