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

js return false 为什么不能终止程序 而是跳出了循环
我在做表单验证,循环判断每个文本框里是不是输入的数字,如果有一个不是数字,则不提交表单,我在表单里放了一个<img >它的onclick事件是提交表单,代码如下:
function submitform()
{
     var datas=$(".datatext1")
       $.each(datas, function(){     
       var textdata=$(this).attr('value');
       if (isNaN(textdata)){
        alert('请填写数字');
        return false;
       // return ;
       }
      }); 
    
document.getElementById('form1').submit();
        alert('数据提交成功!');
}

为什么结果不是我想想的return false后就终止整个函数,也就是不会后两行的提交代码,它只是终止了循环,循环外的依然执行,哪位高手帮帮忙,看看该怎么解决,非常感谢了
------解决方案--------------------
回调函数里面的return跟submitform方法没有什么关系

function submitform(){
     var datas=$(".datatext1") , flag = true;
       $.each(datas, function(){     
           var textdata=$(this).attr('value');
           if (isNaN(textdata)){
               alert('请填写数字');
               flag = false;
               return false;
           //    return ;
       }
      }); 
     if(flag){
     document.getElementById('form1').submit(); 
     }

    
}

------解决方案--------------------
你的这个是jq each执行的匿名函数的返回值,并不是submitform()的返回值

改成下面的
function submitform()
{
     var datas=$(".datatext1")
var r=true;////////////
       $.each(datas, function(){     
           var textdata=$(this).attr('value');
           if (isNaN(textdata)){
r=false;///////////
               alert('请填写数字');
               return false;
           //    return ;
       }
      }); 
     if(!r)return false;///////////////
    document.getElementById('form1').submit();
        alert('数据提交成功!');
}