jQuery进度条1

在画面上加入一个进度条的功能,查了很多资料,终于略有所成。
记下来,以备后用。

由于用到了jQuery,所以引入jQuery.js是必要的,
另外也引入了jquery.progressbar.min.js,这个插件,能帮助代码更快的实现功能需要。

<script type="text/javascript" src="../js/jquery.progressbar.min.js"></script>

用到了jQuery + ajax

$(document).ready(function(){
    //将显示出错用的div,清空
    $("#div_error").html("");
    //按钮“jikou”按下后的处理
    $("#jikou").click(function(){
        var checkMsg = "";
        //在此验证画面输入
        if (!isValidate()) {
            return false;
        }
        //背景显示
        $("#background_panel").show();
        //设置背景div的样式
        $("#background_panel").css({
            "position": "absolute",
            "opacity": 0.3
        });   
        //设置进度条div的样式
        $("#process_bar").css({
            "position": "absolute"
        });
        //设置进度条div居中显示
        $("#process_bar").DivCenter(0);
        //设置状态div的样式
        $("#status_div").css({
            "position": "absolute"
        });
        //居中
        $("#status_div").DivCenter(0);
        $("#status_div").html("准备");

        $.ajax({
            //请求类型
            type: "POST",
            url: "<%= baseUrl%>",    //地址
            data: {input1: $("#input1").val(), input2: $("#input2").val()},    //参数
            dataType: "json",    //传值的类型
            async: false,      //是否同步
            beforeSend: beforeCall,     //发送数据前的处理
            success: function(data) {               
                var jsonData;
              
                checkMsg = "";
               
               
            }    //sucess
        });
       
       
        if (checkMsg != "") {
            //将出错信息显示
            $("#div_error").html(checkMsg);
            $("#div_error").show();
            //将进度变量直接赋到100,因为销毁进度条,要靠这个值来做判断
            increament = 100;
            //销毁进度条
            distoryProcessBar();
            //进度变量清零
            increament = 0;
            return false;
        }
        //初始化进度条的样式
        $("#process_bar").progressBar(increament, {
                                            boxImage: '../pg_images/progressbar.gif',
                                            barImage: '../pg_images/progressbg_green.gif'
                                            }
                                    );
        //定时累加进度条
        var intervalID = setInterval(updateProgress, 100);
        $.ajax({
            type: "POST",
            url: "<%= baseUrl%>",
            data: {input1: $("#input1").val(), input2: $("#input2").val()},
            dataType: "text",
            async: true,
            beforeSend: beforeCall,
            error: errorCall(),
            success: function(msg) {
                //成功返回,停止进度条
                clearInterval(intervalID);   
                //启用新的句柄,将进度条跑完,(100%)
                handle_rest = setInterval(updateProgress, 5);
                //每隔0.3秒监控进度条状况,到100%就将其销毁
                handle_distory = setInterval(distoryProcessBar, 300);
            }
        });
    });

});
//向jQuery注册一个居中函数。
//div居中
$.fn.DivCenter = function(padding) {
    if (!padding) {
        padding = 0;
    }
    var browsernum = (jQuery.browser.msie || jQuery.browser.opera) ? (padding + 2) : padding;
    this.each(function(){
        $(this).css({
            top: "50%",
            left: "50%",
            "margin-top": "-" + (($(this).height() / 2) + browsernum) + "px",
            "margin-left": "-" + (($(this).width() / 2) + browsernum) + "px"
        });
    });
}

function errorCall(XMLHttpRequest, textStatus, errorThrown) {
   
}

function beforeCall() {
   
}

function distoryProcessBar() {
    if (increament >= 100) {
        //销毁进度条
        $("#process_bar").progressBar('distory');
        $("#background_panel").hide();
        //销毁句柄
        clearInterval(handle_rest);
        clearInterval(handle_distory);
        increament = 0;
    }
}

function updateProgress() {    
    //累加进度条,到100就不加了
    if (increament <= 100) {
        $("#process_bar").progressBar(increament++);
    }
}

//画面输入验证函数
function isValidate() {
   
    return true;
}

</script>


另外html要加上这段
<div id="background_panel" style="display:none; width:100%" ><div id="process_bar"></div><div id="status_div"><b></b></div></div>

为了让画面更美观,至少不那么简陋
css中加上这段
#background_panel {
    background:#ADADAD;
    padding:5px;
    left: 0px;
    top: 0px;
    width: 100%;
    height: 100%;
}
#process_bar {
    width:200px;
    height:50px;
    line-height:50px;
    overflow:hidden; 
    background:#ADADAD;
    text-align:center;
}

完成


另外转了贴了一个jQuery.progress的使用文档,让真要用的时候,查起来也方便,不用手忙脚乱的了。

================================分割线==================================

JQuery Progress Bar是基于JQuery开发的进度条插件,秉承了JQuery的简约哲学。不仅容易使用,而且可以轻松定制外观。对于使用了JQuery框架的项目来说,需要使用进度条控件时这是一个不错的选择。

JQuery Progress Bar与常规插件一样,只要用选择器选择一个HTML元素后,直接调用插件的公开方法即可。它提供的公开方法名称为progressBar()。那么,当HTML页面上有一个id为progress1的元素时,可以这样初始化该控件:

$("#progress1").progressBar();

它的构造函数可以接收如下表所示的参数。


方法及参数

用途

progressBar()

按默认设置初始化一个进度条

progressBar(persent)

按默认设置初始化或更新一个进度条,设置进度条的百分比至persent%.

progressBar(config)

config中指定的设置初始化一个进度条,百分比为0%。注意不要在初始化之后使用该方法来更改进度条的设置,否则可能引起显示不正常。

progressBar(persent,config)

config中指定的设置初始化一个进度条,百分比为persent%。注意不要在初始化之后使用该方法来更改进度条的设置,否则可能引起显示不正常。


其中,config参数是一个哈希结构对象,它包含了如下属性用于设置进度条的外观特性

属性

用途

increment

设置进度条每步的增长度。默认值为2

speed

设置进度条初始化时动态滑动效果的速度。默认值为15。这个值越大,则滑动速度越慢。

showText

设置是否显示百分比标识文字。默认值为ture,即显示百分比文字标识。

boxImage

设置边框图片。默认值为images/progressbar.gif。如需定制边框,则修改该属性,指向要使用的图片即可。

barImage

设置进度标识图片。默认值为images/progressbg_green.gif。如需定制,则修改该属性,指向要使用的图片即可。这个图片分类两节,前半节用于标识完成进度,后半截用于标识剩余未完成进度。两节长度相等,且等于进度条的宽度。

width

设置进度条的宽度,这个值必须与barImageboxImage所指向的图片相适应。默认值为120

height

设置进度条的高度,这个值必须与barImageboxImage所指向的图片相适应。默认值为12

与服务器的交互就不在这里讲了,就只是使用ajax从服务器获取进度值,然后用progressBar(persent)更新进度即可。

posted on 2012-11-15 09:41  canny_strive  阅读(434)  评论(0编辑  收藏  举报

导航