日期:2014-05-16  浏览次数:20324 次

javascript jquery函数执行顺序问题
以下用fun代替function

fun one()
{
   alert("one");
}
fun two()
{
   one();
   if(true)
   {
      alert("two");
   }
}
//执行
two();
为什么先弹出来 two 而不是one呢?
//////////////******************源码如下****************//////////////
function posttest()
{
$.post("includes/checkusername.php","username="+$("input[name=username]").val(),function(result){
if('ok'==result)
{
$("#checkuserimg").attr("src","images/ok.jpg");
$("#checkuserimg").css("display","block");
}
else
{
$("#checkuserimg").attr("src","images/no.jpg");
$("#checkuserimg").css("display","block");
alert("用户名已经存在!!!");
return false;
}
});
}

$("form").submit(function(){

posttest();


if($("input[name=password]").val().length<2||$("input[name=password]").val().length>20)
{
alert("密码的长度必须在2~20之间");
$("input[name=password]").focus();
return false;

else if($("input[name=password]").val()!=$("input[name=notpassword]").val())
{
alert("密码和确认密码输入的不一样");
$("input[name=notpassword]").focus();
return false;




}

//可是先弹出的  密码和。。。不一样  然后才是 用户名已经存在
javascript jquery function fun

------解决方案--------------------
对LZ的第一种非常不理解,不知道你用的是什么浏览器。

第二种情况,因为你用了ajax,是一个异步的请求。所以结果是那样很正常,如果你想按顺序来执行,改成同步的就可以了。
$.ajax(
{
url:"includes/checkusername.php",
data:"username="+$("input[name=username]").val(),
async:false,
success:function(result){}
});