0

我有一个在提交时调用的表单验证方法。它执行“get”以验证其中一个字段,如果该字段无效则返回 false:

$.get('validate.cfc', 
    {
        method: 'validateUserID',
        userID: $('#userID').val(),
        returnformat: 'plain'
    },
    function(data){
        if($.trim(data) == 0){
            alert('Invalid userID!');
            return false;
        }
    }
);

然后它继续执行一些更简单的验证步骤(没有 ajax 调用)。例如:

if(!isDate($('#endDate').val()) && $('#endDate').val() != ""){
    alert("Please enter a valid end date");
    return false;
}

问题是代码在get执行时继续。因此,如果用户 ID 无效且结束日期不是日期,则首先显示“请输入有效的结束日期”消息,然后显示“用户 ID 无效!” 信息。如何让我的代码等到获取完成?

(我唯一能想到的就是在 get 之后在函数中的所有其余代码周围放置一个小的 setTimeOut ......这不是最优雅的解决方案。)

4

3 回答 3

1

将第二部分代码放在成功函数中。

于 2012-06-20T10:39:53.060 回答
1

如果我做对了,那么应该这样做:

$.get('validate.cfc', 
{
    method: 'validateUserID',
    userID: $('#userID').val(),
    returnformat: 'plain'
},
function(data){
    if($.trim(data) == 0){
        alert('Invalid userID!');
        return false;
    }else{
            if(!isDate($('#endDate').val()) && $('#endDate').val() != ""){
            alert("Please enter a valid end date");
            return false;

            }else{
                   submit the form
                 }
         }
 }
);
于 2012-06-20T11:01:58.043 回答
0

有一个异步属性作为您的 jquery ajax 请求的一部分发送,只需将其设置为 false。

虽然他们说在新版本中它已被弃用,但我以前使用过它并且它有效。不确定新语法是什么。. . 或者如果是

http://api.jquery.com/jQuery.ajax/

于 2012-06-20T14:39:29.670 回答