Hier ist mein JavaScript-Code. Die Kommentarzeile funktioniert:Warum funktioniert preventDefault nicht?
$("#regForm").submit(function(event) {
// event.preventDefault()
password = $("#inputPassword3")
login = $("#inputEmail3")
user_instance = 0
$.ajax({
url: "{{ url_for('get_users') }}",
method: 'POST'
}).done(function(data) {
data.forEach(function(item) {
if (item.username == login.val() || item.mail == login.val()) {
user_instance = item
}
})
pass_arr = sjcl.hash.sha256.hash(password.val())
hash = sjcl.codec.hex.fromBits(pass_arr)
console.log(hash, user_instance.passwd)
if (hash != user_instance.passwd) {
event.preventDefault()
console.log("+")
password.attr("style", "border:#f00 solid 1px")
password.attr("placeholder", "Wrong password")
}
event.preventDefault()
ist hier nicht arbeiten:
<div id="regForm">
<form class="form-horizontal" method="POST" action="{{ url_for('login') }}">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">Email/Login</label>
<div class="col-sm-10">
<input type="imput" class="form-control" id="inputEmail3" placeholder="Email/Login" name="email">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword3" placeholder="Password" name="password">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox" name="remember_me"> Remember me
</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default" name="sign-in">Sign in</button>
</div>
</div>
</form>
Sie macht geltend, ohnehin bilden, auch wenn Farbe von Formänderung, warum ist das so? Wenn uncommented preventDefault()
funktioniert wie sollte
Ich weiß nicht, was Sie fragen. Das erste Beispiel ist kommentiert, aber Sie sagen, es funktioniert. Der zweite HTML-Block hat keinen Verweis auf preventDefault, aber Sie sagen, dass es nicht funktioniert. Das macht keinen Sinn. –
Sie rufen 'event.preventDefault()' zu spät auf, Sie können es nicht in einem Ajax-Rückruf verwenden. –
Sie müssen die ID des Formulars in regForm ändern, um mit Ihrem Code zu arbeiten. Formular hat Standardverhalten nicht div. Ändern Sie einfach die ID und testen Sie sie. –