写一个注册的代码,想要在提交的时候检查填写的信息是否正确 是通过循环检查用ajax 判断后的span 标签中文字的颜色 如果是所有的信息不正确 return false 但是好像判断没有起到作用 会阻止后面的程序执行 如果正确 用jquery 提交信息 代码是下面的样子 麻烦高手指教啊 
$(document).ready(function() {
$("#sub").live('click',function() {
for(var i = 1 ; i < 8 ; i++) {
if($('#msg'+i).css('color') != 'green') {
return false;
}
}
$("#myform").submit();

});
avalidate();
});
其中的 avalidate() 是我写的一堆验证姓名密码的方法 我发现 for 循环中的if 没有起到作用 会阻止我$("#myform").submit();这个代码的执行 如果把它 去掉就可以执行这句代码 麻烦高手指教啊 。

解决方案 »

  1.   

    说明程序没到$("#myform").submit(); 就停止了。
      

  2.   

    逻辑上没问题,在循环时遇到第一个字体颜色不是绿色的msg span时,click处理函数就被终止运行了。但你用.css()方法进行判断是有问题的,不同的浏览器返回的css属性值是不一样的,比如在safari不会返回green,而是rgb(0, 255, 0)。一定要通过字体颜色进行判断的话,可以在avalidate()函数中对通过验证的表单项的提示信息(span)加上green样式类,然后在提交时通过.hasClass('gree')判断。
      

  3.   

    可能msg中i 没有到8,造成的。试试下面的:
    $(document).ready(function() {
    $("#sub").live('click',function() { 
    for(var i = 1 ; i < 8 ; i++) {
    if($('#msg'+i).length>0)if($('#msg'+i).css('color') != 'green') {
    return false;

    }
    $("#myform").submit(); }); 
    avalidate();
    });