jQuery自定义组件(导入组件)

前端之家收集整理的这篇文章主要介绍了jQuery自定义组件(导入组件)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.组件js

自定义去除字符串两边空白 String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g,""); } //自定义导入组件 $.fn.customImport = function(methodOroptions,value){ if(typeof methodOroptions == "string"){//存在方法时,调用方法 return $.fn.customImport.methods[methodOroptions](this,value); } var optionsObj = methodOroptions||{}; //不存在方法时,那么传递的是属性定义。 return this.each(function() { $.data(this,"customImport",{ options : $.extend({},$.fn.customImport.defaults,optionsObj) }); initCustomImport(this); }); } //定义组件默认属性 $.fn.customImport.defaults={ width:400,height:90,enctype:'multipart/form-data',action:'',//导入方法调用 method:'post',//请求方式 fileType:'.XLS,.xlsx',//文件类型,默认为xls格式 xmlName:'',//导入模版XML参数名 xmlValue:'',//导入模版XML参数值 filePath:'',//文件路径参数名 uploadTemplateUrl:'',//下载模版的路径 onSubmit:function(param){ } } //定义组件方法 $.fn.customImport.methods = { submit :function(obj,options){ if($(obj).customImport("validate")){ var formOptions = {}; if(options.action){ formOptions.url = options.action; } if(options.onSubmit){ formOptions.onSubmit = options.onSubmit; } if(options.success){ formOptions.success = options.success; } $CommonUI.getForm("#importForm").form("submit",formOptions); } },clear:function(obj){ //获取当前文件框 var fileInput = $(obj).find(".real-file"); //在当前文件框后克隆一个相同的元素,并设置值为"",IE默认克隆的值为空,谷歌火狐会将值一起克隆 fileInput.after(fileInput.clone().val("")); //删除当前文件框 fileInput.remove(); //为新的文件框绑定onchange事件 $(obj).find(".real-file").on("change",function(){ changeFile(obj); }); //清空文件显示路径 $(obj).find(".file-pathname").val(""); //取消校验提示 $(obj).find(".validateBox-invalid").removeClass("validateBox-invalid"); },validate:function(obj){ var validateState = $(obj).find(".file-pathname").validateBox("isValid"); return validateState; } } function initCustomImport(obj){ var options = $.data(obj,"customImport").options; $(obj).width(options.width); $(obj).height(options.height); $(obj).attr("enctype",options.enctype); $(obj).attr("action",options.action); $(obj).attr("method",options.method); if(!flag){ //初始化组件 $(obj).append('
');//添加文件选择按钮 $(obj).find(".choose-file").append('文件控件 $(obj).find(".choose-file").append('
Box" type="text" readonly="readonly" data-options="required:true,missingMessage:"请选择导入文件",validType:"importFormatValidate""/>
');//文件路径显示框 $(obj).append('
');//模版下载按钮 $(obj).append('
'); $(obj).find('.import-xml').append('0){ $(".custom-import").customImport(); flag = true; } //选择文件改变时触发 function changeFile(obj){ var filePath = $(obj).find(".real-file").val(); if(filePath&&filePath.trim()!=""){ var fileNamePosition = filePath.lastIndexOf('\\'); var fileName=filePath.substring(fileNamePosition+1); $(obj).find(".file-pathname").val(fileName); $(obj).find(".file-pathname").removeClass("validateBox-invalid"); } } })(jQuery); $(function(){ $.extend($.fn.validateBox.defaults.rules,{ importFormatValidate : {// 验证导入格式是否是excel validator : function(value,param) { var fileTypeIndex = value.lastIndexOf("."); var fileType = value.substring(fileTypeIndex); if(fileType!=".xls"&&fileType!=".xlsx"){ return false; } return true; },message : '请选择.xls或者.xlsx文件!' } }); })

2.组件css

3.组件引用

html部分

js部分

文件路径参数名 uploadTemplateUrl:$WEB_ROOT_PATH+'/exportexcel/exportExcelCtrl!uploadExcelTemplate.htm?filename=systemDictionary' });

4.组件效果

注意事项:

1.该组件使用了easyui-validateBox,使用者也需引用该组件不然校验会出错。

2.该组件是结合后端定制的一个组件,以减少前端html重复配置而导致的出错。值得学习的仅仅是组件定义的方法而不是组件本身。

3.为了满足IE组件有2处特殊处理,第一:是用文件框覆盖在选择目录之上以保证IE安全校验只识别鼠标直接点击的文本框。第二:IE不能直接清除文件框的内容,这里采用克隆删除的方式清空文件框以存在的内容

以上所述是小编给大家介绍的jQuery自定义组件(导入组件)。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

原文链接:https://www.f2er.com/jquery/44543.html

猜你在找的jQuery相关文章