jQuery使用AJAX验证表单

时间:2010-08-06 15:39:52

标签: jquery ajax

我正在尝试使用AJAX调用验证表单以检查可用库存。如果库存检查有错误,则返回一个消息,否则表格应该提交。

我有以下代码:

$("form[id*='distributor_']").submit(function(){
    return checkAvailableInventory($(this));
});

function checkAvailableInventory(form) {
    $.ajax({
        url: "/ajax/quantity.php?" + form.serialize(),
        success: function(msg) {
            if (msg) {
                alert(msg);
                return false;
            } else {
                return true;
            }
        }
    });
}

我怀疑这个问题是由于AJAX的异步特性而发生的,并且在checkAvailableInventory()生命周期完成之后,success:子句才会触发。

有没有人有解决此问题的建议?我已经看到一些人使用超时的例子,但这似乎是一个可能出现问题的解决方法。

2 个答案:

答案 0 :(得分:2)

一种选择是使呼叫非异步。您可以将async proprety设置为false。默认情况下是这样。不确定呼叫有多长,因为它可以锁定浏览器直到完成。

编辑:另一种选择是从进行ajax调用的方法返回false。然后在成功方法中,当它到达那里时你可以解除表单中的提交功能,然后只需调用form.submit,它就会发布到没有验证的正常位置。

答案 1 :(得分:0)

您可能想查看jQuery验证插件!它使用起来非常简单,并且非常好地处理远程验证。

插件:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 有关远程验证的文档:http://docs.jquery.com/Plugins/Validation/Methods/remote#options