基于ajaxFileUpload的文件上传插件(修复onchange第二次失效)
来源:互联网 发布:android 添加网络权限 编辑:程序博客网 时间:2024/05/16 11:47
插件名: jquery.upload.js
基本:
依赖:jquery,ajaxFileUpload.js
调用:$("#uploadBtn").upload(options)
作者:vuturn
Options参数
uploadFile
选择触发的文本上传按钮
callback
回调函数
url
异步请求的url
调用
HTML:
<button id="uploadBtn">文件上传</button><input type="file" id="uploadFile" name="uploadFile" style="display: none">JS:
$("#uploadBtn").upload({ uploadFile : $("#uploadFile"), callback : function (rs) { console.log(rs); }, url:"?r=test/manage" });
说明
1.后台必须返回json,否则ajaxFileUpload会报错
2.修复了文本输入框第二次调用onchange事件失败的bug
jquery.upload.js源代码
;(function ($, window, document, undefined) { //默认操作 var defaults = { //选择元素 uploadFile: $("#uploadFile"), //回调函数 callback: function (rs) { console.log(rs); }, //url url: "" }, //缓存实例 _that, //插件构造函数 Plugin = function (element, options) { this.element = element; this.options = $.extend({}, defaults, options); this._defaults = defaults; this.init(); }; //初始化函数 Plugin.prototype.init = function () { _that = this; //点击上传触发隐藏的文本上传按钮 $(this.element).on("click", function () { //ajaxFileUpload 会自己建立一个隐藏的文本上传按钮,而且将我们的绑定事件转移到这个元素身上 // 所以trigger触发会遇到第二次上传不触发onchange事件 $(_that.options.uploadFile.selector).trigger("click"); }); //文件上传onchange事件 this.options.uploadFile.on("change", function () { DialogBindUploadFile($(this), _that.options.url, _that.options.callback); }); }; //插件 $.fn.upload = function (options) { return this.each(function () { if (!$.data(this, "upload")) { $.data(this, "upload", new Plugin(this, options)); } }); }; var DialogBindUploadFile = function ($obj, url, callback) { var _name = $obj.val(); if (_name) { _name = _name.split("\\").pop(); DialogUploadFile(url, $obj, $obj.attr('id'), _name, "cover", callback); } else { alert("请选择文件"); } }, //调用ajaxFileUpload DialogUploadFile = function (_url, _obj, _id, _name, type, success) { var $csrf = $('meta[name = YII_CSRF_TOKEN]').attr('value'), _data = {}; _data['YII_CSRF_TOKEN'] = $csrf; _data['type'] = type; $.ajaxFileUpload({ url: _url, secureuri: false, fileElementId: _id, dataType: 'json', data: _data, success: function (rs) { //回调函数 success.call(null, rs); //第二次绑定 $(_that.options.uploadFile.selector).on("change", function () { DialogBindUploadFile($(this), _that.options.url, _that.options.callback); }); } }); };})(jQuery, window, document);
2 0
- 基于ajaxFileUpload的文件上传插件(修复onchange第二次失效)
- jQuery 文件上传插件ajaxFileUpload使用以及onchange问题
- jQuery插件之ajaxFileUpload(异步上传图片并实时显示,并解决onchange后ajaxFileUpload失效问题)
- jQuery插件之ajaxFileUpload(异步上传图片并实时显示,并解决onchange后ajaxFileUpload失效问题)
- 关于ajaxFileUpload上传文件时第二次上传无效的解决办法
- ajaxfileUpload.js 异步文件上传 onchange问题
- ajaxFileUpload插件上传文件
- onchange第二次点击失效的解决办法
- jQuery上传文件插件AjaxFileUpload的使用
- jQuery的插件ajaxFileupload上传文件
- ajaxFileUpload onchang第二次失效
- 上传文件(可用ajaxfileupload.js插件)
- 关于ajaxfileupload插件不能上传第二次 不能重复上传问题的解决
- ajaxFileUpload Jquery文件上传插件
- ajaxFileUpload文件上传Jquery插件
- ajaxFileUpload异步上传资源,onchange多次调用问题的解决方案
- 利用Jquery ajaxfileupload插件+PHP 进行文件的上传
- jquery ajaxFileUpload.js插件支持多文件上传的方法
- Habber - IOS XMPP 客户端 教程 (一)准备工作
- php 关于fgetcsv中文乱码问题
- linux 命令之 setfacl
- 用browser-sync进行实时刷新
- 关于Volley网络请求框架空指针异常问题
- 基于ajaxFileUpload的文件上传插件(修复onchange第二次失效)
- VB课本总结
- Android开发网上的一些重要知识点
- Java RMI之HelloWorld篇
- 百度UEditor的初始化
- 设计模式之命令模式
- fieldset和legend
- ScrollView内嵌套ListView,ListView只显示一个item
- 国内外云平台访问控制(Access Control)机制对比分析