JavaScript関数を終了する方法に関する次の投稿を読みました。
JavaScript関数を終了するにはどうすればよいですか?
この例を自分のコードに適応させようとしていますが、何かが足りない/何か間違っています。
次のjqueryコードがあります:
$('#main_submit_button').live('click', function(){
check_for_duplicate_rule().done(function(result) {
console.log("result from check for duplicate" + result);
if (result == 'true') {
$('#validation_error').html("A similar rule already exists");
return;
}
});
//}
console.log("i made it this far");
return false;
console.log($('#rule_form').serialize() );
}
重複データを使用してテストすると、システムは「同様のルールが既に存在します」というエラーを正しく表示しますが、コンソールには「ここまでできました」というメッセージも表示します。フォーム serialize() コマンドの結果は表示されません。エラーメッセージを設定した後、コードが.clickイベントハンドラーを終了することを期待していました。
「return」ステートメントを「return false」に変更しようとしましたが、それも機能しません。私が間違っていることを教えてもらえますか?最終的に、このルーチンで実行したいことは、サーバーにデータを送信する前に、クライアント側の検証チェックをいくつか実行することです。そのため、関数には「戻る」または終了する必要がある複数のポイントがあります。
ありがとう
編集1
コードを次のように変更しました。
var bduplicate = false;
check_for_duplicate_rule().done(function(result) {
console.log("result from check for duplicate" + result);
if (result == 'true') {
$('#validation_error').html("A similar rule already exists");
bduplicate = true
return;
}
});
//}
if (bduplicate) {
return;
}
console.log("i made it this far");
しかし、それでも「ここまでできました」というメッセージが出力されます。check_for_duplicate_rule 関数に問題がある可能性があると思います。?? 次のようになります。
function check_for_duplicate_rule() {
var parameters = {
num: $('#num').val(),
condition: $('#condition').val(),
cdidnumber: $('#cdidnumber').val()
}
return $.getJSON(
url = aURLdefinedsomewhere,
parameters,
function(data) {
//if (data=='true') {
//$('#validation_error').html("A similar rule already exists");
//}
}//end data
);//end getJSON
}
コンソールに表示されているのは、「重複する真のチェックの結果」メッセージが「ここまで成功した」の後に出力されていることです。これは、持っていない結果をチェックしていることを示しているようです... ? これが本当なら、私はそれを修正する方法を本当に知りません。