我用的是jquery validationEngine这个插件。我需要在JS中做验证,不能在html页面上使用validate[]这种形式。//验证函数_validate = function(node,rules){ var nodeValue = $(node).val(),//input的值 nodeId = $(node).attr('id')//input的ID tips = '',//提示信息 isPass = false,//如果验证不通过,则为false tipStatus = '';//提示类型 pass,load,error for(i in rules){ swith (i){ case 'required': if(!nodeValue){ console.log(1);//执行顺序测试 isPass= false; tipStatus = 'error'; tips += '* 此值不能为空'+'<br/>'; } break; case 'minSize': .... break; case 'ajax': switch(rules.ajax){ case 'ajaxUserCall'://验证是否已注册 if(nodeValue && isPass){//其他验证成功的情况下才做此验证 $.get('./?mod=member&ac=check&op=username', { elId:nodeId, elValue:nodeValue }, function(data){ console.log(1);//执行顺序测试 if(data[1]){//返回成功 tipStatus = 'pass'; }else{ tipStatus = 'error'; }//具体验证console.log(2);//执行顺序测试$('#username').on('blur',function(){ _validate('#username',{'required':'','minSize':4,'ajax':'ajaxUserCall'});});遇到的问提是在验证required的时候isPass,tips,tipStatus赋的值都能传递到“具体验证”的位置,在console中打印出来是正常的。但是在ajaxUserCall验证时的赋值,就无法传递到这里。打印出来的值是在var初始化时的值。我在required和ajaxUserCall的回调函数中分别打印console.log(1),在“具体验证”的位置打印console.log(2)。当我做required验证时,console中显示的是1,2。但在做ajax验证的时候,console打印出的是2,1。感觉ajax的回调函数是在整个函数执行完之后才执行的,是不是这个原因我也不太清楚。想请教一下,如何解决这个问题,能正确的传值。谢谢
添加回答
举报
0/150
提交
取消