ここに私のJavaScriptコードです。コメント行は動作します: preventDefaultが機能しないのはなぜですか?
$("#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()
<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>
それは、フォームの変更の色は、それが理由であっても、とにかく形成提出しますか?
を試してみてくださいする必要がありますとしてコメントを外し
preventDefault()
が動作しているとき、私はあなたが求めているのか分かりません。最初の例はコメントされていますが、それはうまくいきます。 2番目のHTMLブロックにpreventDefaultへの参照はありませんが、動作しないと言います。それは意味をなさない。 –'event.preventDefault()'を遅く呼び出すと、それをajaxコールバックで使用することはできません。 –
コードを操作するには、フォームのIDをregFormに変更する必要があります。フォームにはdivでないデフォルトの動作があります。 IDとテストを変更するだけです。 –