0
次のjavascript/jqueryコードがあります。特定の条件が満たされたときにjQueryの.on()関数で関数を終了する方法
私はJavaScriptの初心者ですので、この質問は非常に解決しやすい場合は謝罪します。 エラーがある場合、またはサーバー上にキーが見つからない場合は、この.on( 'クリック')機能を終了します。クリックバインドでは、フォーム上のポストリクエストが発生するため、これらの2つの条件が満たされない場合は、実行を継続したいと思います。私は他の例を調べて、return
,.stopPropagation
など
のようなものを試しました。 return;
とreturn false;
を試しましたが、まだページが更新され、フォームの投稿要求が発生します。
私は間違っていますか?
$(document).ready(function() {
var validation = false;
$('#submitform').on('click', function(e) {
if (validation === true) {
validation = false; // reset flag
return;// let the event bubble away
}
if ($('#street_number') == "" && $('#route') == "" && $('#lat') == "" && $('#lon') == ""
&& $('#administrative_area_level_1') == "") {
alert("Unknown Address");
validation = false;
e.preventDefault();
return false;
}
else {
var data_dict = {
// Number
'street_number': $('#street_number').val(),
// Address
'address': $('#route').val(),
// City
'city': $('#locality').val(),
// postal code
'postal_code': $('#postal_code').val(),
// State
'state': $('#administrative_area_level_1').val(),
// Country
'country': $('#country').val()
};
$.ajax({
url: '/zillow_check/',
data: data_dict,
method: 'POST'
}).then(function (response) {
console.log("Checking for Zillow ID...");
if (response.error) {
console.error("There was an error " + response.error);
$('.dashboard-main__appartment--input').addClass('serverError');
validation = false;
e.stopImmediatePropagation();
return;
} else {
console.log("Zillow key: " + response);
if (response == 'No zillow ID found.') {
// You can change this to whatever you like.
alert("Can't add this object. It does not exist on Zillow. Check the Address and try again.");
validation = false;
e.stopImmediatePropagation();
return;
}
else if (isNaN(response) == false) {
validation = true;
$('#propertyform').submit()
}
}
});
}
});
});
私はその解決策を試しました。残念ながら、あなたが提案した '' 'e.preventDefault();' 'を書いてもフォームは送信されません。私はその事件をどうにかして扱わなければならないのですか? –
あなたは '$( '#propertyform')。submit()'でajax成功のコールバックでそれを送信しています。それが機能していない場合は、他の条件をデバッグする必要があります – charlietfl
console.logステートメントをそのelseブロックに追加しました。ステートメントが正しく起動されますが、フォームは送信されません。 '' e.preventDefault() ''を削除すると動作しますが、その場合の他の条件でもフォームが送信され、元の質問に戻ります。 –