我正在尝试编写JS代码,如果给定的数字已存在于数据库中,则取消“btn_submit”按钮的.onclick事件。我使用AJAX查询给定数字的DB,并确定是否应将数据发送到.php网站,该网站将上传问题。为了确定这一点,我需要numOfRows变量的值,但由于我在AJAX中设置它,它将保持为0。验证()函数将在我的AJAX查询完成之前完成,这会导致问题,始终声明给定数字不存在于DB中(numOfRows将始终保持为0)。如何在比较validation()函数末尾行的numOfRows与0之前等待AJAX查询完成?如果数字已经存在于DB中,我需要返回false到此行:
document.getElementById("btn_submit").onclick = validation;
谢谢!
var textAreaList;
var numOfRows = 0;
var finished = false;
document.getElementById("btn_submit").onclick = validation;
textAreaList = document.getElementsByClassName("text_input");
function validation() {
loadNumRows();
try {
document.getElementById('failure').hidden = true;
}
catch(e) {
console.log(e.message);
}
textAreaList = document.getElementsByClassName("text_input");
var failValidation = false;
for (var i = 0; i < textAreaList.length; i++) {
console.log(textAreaList[i]);
if (textAreaList[i].value == "") {
textAreaList[i].style.border = "2px solid #ff0000";
failValidation = true;
} else {
textAreaList[i].style.border = "2px solid #286C2B";
}
}
return !(failValidation || numOfRows != 0);
}
function loadNumRows(){
$.ajax({
url: 'php/SeeIfNumberExists?number=' + document.getElementById('number_inp').value,
type: "GET",
cache: false,
success: function (html) {
numOfRows = parseInt(html);
}
});
}