我有以下 JavaScript 代码,它遍历页面上的文本字段列表。它将文本字段中的文本作为价格,通过 AJAX GET 将其发送到服务器,并从服务器获取已解析的 double。如果任何返回的价格低于现有价格,则不应提交表单。
问题是表单在所有 AJAX 请求完成之前提交,因为 Ajax 调用的非阻塞即时响应性质。我需要设置一个 wait() 函数(或在所有 Ajax 方法完成时的回调),但不知道如何使用 jQuery 来做到这一点。
有什么建议么?
// .submitForm is a simple button type="button", not type="submit"
$(".submitForm").click(function(e){
var submittable = validatePrices();
if (submittable) {
$("#myForm").submit();
}
});
function validatePrices() {
var submittable = true;
$(".productPrice").each(function(){
var $el = $(this);
$.ajax({
type: "POST",
url: "/get_price.jsp",
async: false,
dataType: "html",
data: "price=" + $el.val(),
success: function(data)
{
var price = new Number(data.split("|")[1]);
var minPrice = new Number($el.data("min-price"));
if (price < minPrice)
{
$el.addClass("error");
$(".dynamicMessage").show().addClass("error").append("<p>ERROR</p>");
submittable = false;
}
}
});
return submittable;
});
}