javascript - 谁能帮我分析一下这段代码中 var flag = false;作用啊
高洛峰
高洛峰 2017-04-11 09:09:12
[JavaScript讨论组]

$(function(){

    //定义标记,判断能否提交表单
    var flag = false;
 
 
    $("#username").blur(function(){
        var username = $(this).val().trim();
        if(username.length<6||username.length>20){
            $("#spanName").html("注册名长度6~20");
            flag = false;
            return;
        }else{
            $("#spanName").html("<img src='/book/image/ok.png'  width='10%' ></img>");
        }
         
        $.ajax( {    
            url:'/book/user/validate.do',// 跳转到 action    
            data:{    
                 username : username,    
            },    
            type:'post',    
            dataType:'json',    
            success:function(data) {
                if(data=="yes"){
                    $("#spanName").html("<img src='/book/image/ok.png'  width='10%' ></img>");
              flag = true;
              return;
                }else{
                    $("#spanName").html("用户名已存在");
                    flag = false;
                    return;
                }
                 
             },    
             error : function() {
                 alert("err");    
             }    
        });
       
         
    });
     
    .............
    //提交表单
$("#register").click(function(){
        $("input").blur();
        if(flag){
            $("#registerId").submit();
        }
});
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(5)
怪我咯

这个 flag 理解一个开关,如果为 true 即打开, 才提交表单,为 false 则不提交,
这样做的目的是,在前端页面对表单内容进行判定,若不合格的数据,就不提交,减少服务器不必要的负载。
当然 判定的方法很多, 使用一个 flag 的目的还是使代码更简介、清晰。

其中:

if(username.length<6||username.length>20){
            $("#spanName").html("注册名长度6~20");
            flag = false;  // 这一段表示,用户名不符合规则时,关闭开关
            return; 
}

....

$("#spanName").html("用户名已存在");
                flag = false;  // 查询后用户名已存在,则关闭开关
...

// 提交表单前,先判定 flag 是什么状态
if(flag){
    $("#registerId").submit();
}
ringa_lee

判断是否要表单提交啊,每次点击提交触发这个事件,flag默认是false,说明不满足以上条件,如果它已经验证了username是对的,那就让flag为true,这样才能继续提交啊.

高洛峰

flag标记,只有为true时,点击事件click才能触发 $("#registerId").submit();提交表单。。如果为false就提交不了,也就等于为false时禁用了click提交动作,这个还可用于动画函数防止动画被多次重复触发等等- -

PHP中文网

就是一个开关判断能不能提交表单。不过,这段代码有bug,如果在触发ajax但是还没有调用success的时候,flag是ture,如果不符合条件点击提交按钮依旧是可以提交的。

天蓬老师

这段代码有bug。flag=true应该写在success的回调里面。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号