如何实现Jquery的LigerUI文件上传

如何实现Jquery的LigerUI文件上传,第1张

一 在Head中加入

<script src= /lib/js/ajaxfileupload js type=text/javascript></script><script src= /lib/js/ligerui expand js type=text/javascript></script>

二 Html中的Div代码

<div id="AppendBill_Div" ><% 上传 单 %><table ><岁猛tr ><td >图标: </td><td><input type=file id="fileupload" name=fileupload/></td></tr></table></div>

三 Js中 写的是关键部分 会LigerUI的朋友 你懂得

grid中添加乎模桥项【存地址字段】 { display: "扫描件" name: "AppendBillPath" width: type: "text" align: "left" } Form可添加项【存地址和d出选择框】

{ name: "AppendBillPath " type: "hidden" } // 上传 【 】 { display: "扫描件" name: "AppendBillPath" boboxName: "AppendBillPath " newline: true labelWidth: width: space: type: "select" options: {}} // 上传 【 】 $ ligerui get("AppendBillPath ") set( onBeforeOpen f_selectAppendBillPath_ ) // 【扫描件】 // 上传 【 】 事件

// #region ======================================= 【上传扫描件窗口】 // 上传 【 】

var AppendBillPathDetail = nullfunction f_selectAppendBillPath_ () { var imageurl = $("#AppendBill") val()var AppendBill_Id = $("#AppendBill") val()// 单号 if (imageurl length == ) { LG showError("您没有输入单号 请输入随单号!")return}

if (AppendBillPathDetail) { AppendBillPathDetail show()

} else {

AppendBillPathDetail = $ ligerDialog open({ target: $("#AppendBill_Div") title: 添加图标 width: height: top: left: // d出窗口大小 buttons: [ { text: 上传 onclick: function () { AppendBillPath_save()} } { text: 取消 onclick: function () { AppendBillPathDetail hide()} } ] })} }

function AppendBillPath_save() {

var imgurl = $("#fileupload") val()// var filehelpcode = $("#filehelpcode") val()

var extend = imgurl substring(imgurl lastIndexOf(" ") imgurl length)extend = extend toLowerCase()if (extend == " jpg" || extend == " jpeg" || extend == " png" || extend == " gif" || extend == " bmp") { } else {

LG showError("请上传jpg jpep png gif bmp格式码简的图片文件")

return} var imageurl = $("#AppendBill") val()// extend alert(imageurl)

$ ajaxFileUpload({ url: " /handle/ImageUpload aspx?imageurl=" + imageurl // 上传 【 】 aspx文件 secureuri: false fileElementId: "fileupload" //Input file id

dataType: "text" success: function (data status) {

// // 保存路径

// $("#AppendBillPath ") val(Data)LG tip(data)f_reload()} error: function (data status e) { LG showError(data)

} })

}

// #endregion 四 后台cs 写一句关键的 可以返回参数 前台提示

lishixinzhi/Article/program/Java/JSP/201311/20623

从API来看,它们之间视乎没有根本性的区别,下面看对比图,

我这里只列出了API文档中参数的对比图,两个类其他的API也与图中情况差不多,Dialog的API比较多,但几乎都涵盖了Window中的API,可以自行访问下面的网址查看:

http://api.ligerui.com/

Window的API里面比Dialog多出了一样东西,那就是事件回调函数。

为什么他们的API这么接近,为啥不是一个东西呢?下面我找到了它的源码:

http://git.oschina.net/ligerui/LigerUI/tree/Release/Source/lib/ligerUI/js/plugins

在 ligerWindow.js 中,我发现第46行,如下

l.controls.Window.ligerExtend(l.core.Win, {

同样我在 ligerDialog.js 中,104行,有同样的一句话,如下

l.controls.Dialog.ligerExtend(l.core.Win, {

这表示Dialog与Window是继承自同一个父类 l.core.Win,随后我查看了 js/core/base.js,在这唯哪个文件的770行我看到了 liger.core.Win 的真实面目。liger.core.Win 并没有做很多的事情,只实现遮罩功能和定义一些抽象接口。

最后我又重新回去阅读了 ligerDialog.js 的代码,从第 875 行开始一直到结束,这才是 Dialog 与 Window 最大的区别所在,Dialog 是单例对象,不建议在使用的时候继承与扩展,而 Window 是一个多例类,允许直接继承并扩展。

我拿出源码里面 5个 最基本的函数,来说明 Dialog 是单例类的事实:

$.ligerDialog.open = function (p)

{

    // 实例化一个 l.controls.Dialog 对象

    // 内部可以追述到第33行,使用 liger.run() 函数构造 Dialog 实例

    return $.ligerDialog(p) 

}

$.ligerDialog.close = function ()

{

    // 根据 Dialog类型 查到到所有的 dialog 实例对象

    var dialogs = l.find(l.controls.Dialog.prototype.__getType())

    

    // 循环每一个 dialog实例并销毁

    for (var i in dialogs)

    {

        var d = dialogs[i]

        d.destroy.ligerDefer(d, 5)

    }

    

    // 隐藏遮罩层

    // 在ligerUI中,所有的窗口使用的是一个全局的mask

    // 相关代码可以看 js/core/base.js 598行

    l.win.unmask()

}

$.ligerDialog.show = function (p)

{

    var dialogs = l.find(l.controls.Dialog.prototype.__getType())

  指哪码  if (dialogs.length)

    {

        for (var i in dialogs)

        缓世{

            // 如果已经存在 dialog实例,那么就直接使用实例对象

            // 显示已存在的dialog,并返回

            dialogs[i].show()

            return

        }

    }

    

    // 如果不存在 dialog实例,则初始化一个实例并返回

    return $.ligerDialog(p)

}

$.ligerDialog.hide = function ()

{

    var dialogs = l.find(l.controls.Dialog.prototype.__getType())

    

    // 隐藏dialog实例也是相同的方式

    for (var i in dialogs)

    {

        var d = dialogs[i]

        d.hide()

    }

}

$.ligerDialog.tip = function (options)

{

    // 初始化选项参数

    options = $.extend({

        showType: 'slide',

        width: 240,

        modal: false,

        height: 100

    }, options || {})

    $.extend(options, {

        fixedType: 'se',

        type: 'none',

        isDrag: false,

        isResize: false,

        showMax: false,

        showToggle: false,

        showMin: false

    })

    

    // 构造一个Dialog实例

    return $.ligerDialog.open(options)

}

根据上面的代码解读,结论就很清晰了:

Dialog是一个单例对象,不建议继承与扩展

Window是多例类,允许继承并扩展

我觉得ligerUI对Window的设计没有 Ext 设计得好,Dialog应作为Window的一个单例对象才相对合理,Ext就是这么做的。有兴趣的话,可以了解下Ext,Ext是目前我认为前端UI组件化设计得最好的一个框架。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12436677.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存