event.preventDefault () nie działa w Mozilli lub IE
W końcu testuję moją witrynę w innych przeglądarkach (zbudowałem ją głównie w Chrome). Niestety wiele rzeczy wydaje się działać inaczej. Zacznę od pierwszego problemu: po zalogowaniu mam czek JS / jQuery, aby upewnić się, że nazwa użytkownika i hasło są zgodne, a po niepowodzeniu powinien przerwać przesyłanie.
Jednak, podczas gdy działa w Chrome i Safari, w Mozilli i IE, przesłanie wciąż trwa (trafiając na stronę przeprosin, ale wciąż coś, czego wolałbym po prostu nie widzieć).
Próbowałem odciąć sięevent.preventDefault()
dlae.preventDefault()
lubevt.preventDefault()
ale żadna z nich nie działa, formularz nadal się przesyła (a przez dwa kolejne sprawia, że także w Chrome). Oto mój kod, pokochałbym wszelkie myśli:
function checkLogin()
{
// get the variables, execute some other checks (eg, things not blank)
// run ajax code to determine if pieces match
$.ajax({
type: "POST",
url: "check_login.php",
data: {'username': username, 'password': password},
async: false,
success: function(result)
{
if (result == 1)
{
$('#loginoff').html("Invalid username/password");
e.preventDefault();
return false;
}
else
{
$('#loginoff').html("");
return true;
}
}
});
}
Należy pamiętać, że funkcja zdecydowanie przechodzi i powraca 1, gdy nazwa użytkownika i hasło nie zgadzają się, ponieważ we wszystkich przypadkach pojawia się komunikat „Nieprawidłowa nazwa użytkownika / hasło”.
Ponadto, jeśli ktoś jest zainteresowany HTML:
<form action="login.php" method="post" onsubmit="return checkLogin()">
<!-- code for inputs, eg username -->
<input type="submit" class="btn" value="Log In"/>
</form>