我有一个表单验证方法,在提交时调用。它执行“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
执行时继续。因此,如果userID无效且结束日期不是日期,则首先显示“请输入有效的结束日期”消息,然后显示“无效的用户ID”!信息。如何让我的代码等到get结束?
(我唯一能想到的是在get ...之后的函数中,在函数中放置一个小的setTimeOut,而不是最优雅的解决方案。)
答案 0 :(得分:1)
将第二部分代码放入成功函数中。
答案 1 :(得分: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
}
}
}
);
答案 2 :(得分:0)
作为jquery ajax请求的一部分,有一个async属性要发送,只需将其设置为false。
虽然他们在新版本中说它已被弃用,但我之前已经使用过它并且它起作用了。不确定新语法是什么。 。 。或者如果是