为什么上传控件放到模态框里面就不行了呢?而不在模态框的正常dom下却是可以的。我猜测导致问题的原因是因为模态框的dom结构刚开始是隐藏的元素display:none,而对diaplay:none的元素执行js,是不会生效的,要解决这个问题,我们就要在模态框渲染完之后,模态框对应的dom节点在页面上都加载完成之后重新去执行上传控件的js。于是出现了下面三种解决方案。

      方案一:

      使用uploader.refresh();

      在模态框加载完成之后,执行这个函数,代码如下。

    //create()

    var uploader = WebUploader.create({

        // swf文件路径

        swf:'webuploader/Uploader.swf',


        // 文件接收服务端。

        server: 'http://webuploader.duapp.com/server/fileupload.php',


        // 选择文件的按钮。可选。

        // 内部根据当前运行是创建,可能是input元素,也可能是flash.

        pick: '#picker',


        // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!

        resize: true

    });

    $('#myModal').on('shown.bs.modal', function () {

       uploader.refresh();//在模态框加载完成之后执行重绘按钮的方法。

    });