[关闭]
@Hubertoo 2017-09-29T07:28:22.000000Z 字数 5974 阅读 536

工作笔记

笔记


  1. //可以用try-catch屏蔽掉js某代码块的错误或者用下面方法
  2. <script language="javascript" type="text/javascript">
  3. function killerror() {
  4. return true;
  5. }
  6. window.onerror = killerror; //加载窗口时调用KILLERROR函数
  7. </script>
  8. //绑定点击Enter键触发事件
  9. $("#search").keydown(function(event){
  10. if(event.keyCode == 13){
  11. console.log("触发了Enter键");
  12. }
  13. }
  14. $("#search").blur(function(){
  15. console.log("失去焦点事件"); //focus是得到焦点事件
  16. }
  17. //点击importBtn导入弹框
  18. $("#importBtn").click(function(){
  19. $('#import').modal(); //id为import的模块框见:E:\codes\ltemr-web-hgp\src\main\webapp\module\helpdocs\lte_helpdocs.jsp
  20. })
  21. var div = $("#addPdf").empty(); //清空元素
  22. //动态添加标签embed
  23. function addElementEmbed(bigId){
  24. var div = document.getElementById("addPdf");
  25. //添加元素前需要清空原来就有的元素
  26. var div = $("#addPdf").empty();
  27. var embed = document.createElement("embed");
  28. var embed = document.createElement("embed");
  29. embed.setAttribute("id", "pdfPlayer");
  30. embed.setAttribute("type", "application/pdf");
  31. embed.style.height = "100%";
  32. embed.style.width = "100%";
  33. embed.src = "/helpdocs/"+ bigId +".pdf";
  34. div.append(embed);
  35. }
  36. //uploadify插件使用
  37. //jsp代码
  38. <input type="file" id="uploadify" name="uploadify"/>
  39. <button type="button" onclick="$('#uploadify').uploadify('upload');" class="btn btn-primary">确定</button>
  40. <button type="button" class="btn btn-default closemodel" data-dismiss="modal">取消</button>
  41. //js代码
  42. $("#uploadify").uploadify({
  43. //指定swf文件
  44. 'swf': $.AdminLTE.ctx+'/static/lib/uploadify/uploadify.swf',
  45. //后台处理的页面
  46. 'uploader': $.AdminLTE.ctx + "/modules/helpdocs/upload.do?id=" + bigId,
  47. //选择文件到文件队列中后的每一个文件上的关闭按钮图标
  48. 'cancelImg':$.AdminLTE.ctx+'/static/lib/uploadify/uploadify-cancel.png',
  49. 'button_image_url':$.AdminLTE.ctx+'/static/lib/uploadify/button_image.png',
  50. //按钮显示的文字
  51. 'buttonText': '添加文件',
  52. //显示的高度和宽度,默认 height 30;width 120
  53. 'height': 25,
  54. 'width': 100,
  55. //'method': 'POST',
  56. //附件大小限制
  57. //'fileSizeLimit' : '30720KB',
  58. //附件个数限制
  59. 'uploadLimit' : 1,
  60. //上传文件的类型 默认为所有文件 'All Files' ; '*.*'
  61. //在浏览窗口底部的文件类型下拉菜单中显示的文本
  62. //'fileTypeDesc': 'Image Files',
  63. //允许上传的文件后缀
  64. 'fileTypeExts': '*.pdf',
  65. //发送给后台的其他参数通过formData指定
  66. // 'formData': { 'map_style': ''},
  67. //上传文件页面中,你想要用来作为文件队列的元素的id, 默认为false 自动生成, 不带#
  68. //'queueID': 'fileQueue',
  69. //选择文件后自动上传
  70. 'auto': false,
  71. //设置为true将允许多文件上传
  72. 'multi': false,
  73. //上传成功后执行
  74. 'onUploadSuccess': function (file, data,response) {
  75. $("#uploadify").uploadify("destroy");
  76. showAlert("提示信息","保存成功!");
  77. $('#import').modal('hide');
  78. init();
  79. },
  80. 'onUploadStart' : function(file) {
  81. $.messager.progress({
  82. title : '提示信息!',
  83. text : '正在处理,请稍后....'
  84. });
  85. },
  86. 'onUploadComplete':function(){
  87. }
  88. });
  89. //java代码
  90. @ResponseBody
  91. @RequestMapping(value = "/upload", method = {RequestMethod.POST, RequestMethod.GET})
  92. public Object upload(HttpServletRequest request) throws Exception{
  93. Map<String, Object> query = WebUtils.getParametersStartingWith(request, "");
  94. QueryCriteria criteria = new QueryCriteria();
  95. //如果ajax出现乱码,则需要转码,在部署环境不需要转码
  96. criteria.put("id",UTF2GBK.urlToUTF8(query.get("id").toString()));
  97. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  98. // 获得文件:
  99. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  100. Map<String, String> result = new HashMap<String, String>();
  101. result.put("result", "导入成功");
  102. InputStream is = null;
  103. OutputStream os = null;
  104. try{
  105. String datePath2 =request.getSession().getServletContext().getRealPath("/");
  106. String datePath = datePath2 + "../helpdocs/" + criteria.get("id") + ".pdf";
  107. File date = new File(datePath);
  108. is = fileMap.values().iterator().next().getInputStream();
  109. os = new FileOutputStream(date);
  110. byte[] flush = new byte[1024];
  111. int len = 0;
  112. while(0<=(len=is.read(flush))){
  113. os.write(flush, 0, len);
  114. }
  115. }catch (Exception e){
  116. e.printStackTrace();
  117. }finally{
  118. //关闭文件流
  119. if(os != null){
  120. try {
  121. os.close();
  122. } catch (Exception e) {
  123. logger.error(e.getMessage(), e);
  124. }
  125. }
  126. if(is != null){
  127. try {
  128. is.close();
  129. } catch (Exception e) {
  130. logger.error(e.getMessage(), e);
  131. }
  132. }
  133. }
  134. return result;
  135. }
  136. //zTree插件的使用
  137. var myTreeSetting = {
  138. view: {
  139. showLine: false,
  140. selectedMulti: false,
  141. showIcon: false,
  142. dblClickExpand: false //屏蔽掉双击事件
  143. //showTitle: false
  144. },
  145. async: {
  146. enable: true,
  147. type: "post",
  148. dataType:"json",
  149. /*Ajax 获取的数据类型,默认值:"text"。这里我使用了json。*/
  150. url: $.AdminLTE.ctx + "/modules/helpdocs/getTreeContent.do?searchValue=" + searchValue,
  151. /*Ajax 获取数据的 URL 地址,默认值:"".设置固定的异步加载 url请注意地址的路径,确保页面能正常加载。 url 内也可以带参数,
  152. 这些参数就只能是通过 get方式提交了,并且请注意进行data格式。不同的树目录根据不同的数据,在服务器端编写好不同的url,将其配置在这里即可。*/
  153. autoParam:["id=pId"]
  154. /*用于对 Ajax 返回数据进行预处理的函数。之后代码中会给出filter的定义*/
  155. /*dataFilter: filter*/
  156. },
  157. data: {
  158. simpleData: {
  159. enable: true,
  160. /*简单模式的 JSON 数据需要使用 id/pId表示节点的父子包含关系
  161. enable:true即表示使用简单数据格式,不配置或配置为false则为标准数据格式.*/
  162. idKey:"id",
  163. pIdKey:"pId",
  164. rootPId:0
  165. },
  166. key: {
  167. title: "description"
  168. }
  169. },
  170. callback:{
  171. onClick: zTreeOnClick,
  172. onAsyncSuccess: zTreeOnAsyncSuccess,
  173. onRightClick: zTreeOnRightClick
  174. dblClickExpand: false//屏蔽掉双击事件*/
  175. }
  176. };
  177. //详细树的使用见API
  178. //获取当前时间
  179. Date currentTime = new Date();
  180. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  181. String dateStr = formatter.format(currentTime);

9.12

jQuery的each()函数的用法

  1. each处理一维数组
  2. var arr1 = [ "aaa", "bbb", "ccc" ];
  3. $.each(arr1, function(i,val){
  4. alert(i);
  5. alert(val);
  6. });
  7. alert(i)将输出012
  8. alert(val)将输出aaabbbccc
  9. each处理二维数组
  10. var arr2 = [['a', 'aa', 'aaa'], ['b', 'bb', 'bbb'], ['c', 'cc', 'ccc']]
  11. $.each(arr, function(i, item){
  12. alert(i);
  13. alert(item);
  14. });
  15. arr2为一个二维数组,item相当于取这二维数组中的每一个数组。
  16. item[0]相对于取每一个一维数组里的第一个值
  17. alert(i)将输出为012,因为这二维数组含有3个数组元素
  18. alert(item)将输出为 ['a', 'aa', 'aaa'],['b', 'bb', 'bbb'],['c', 'cc', 'ccc']
  19. 对此二位数组的处理稍作变更之后
  20. var arr = [['a', 'aa', 'aaa'], ['b', 'bb', 'bbb'], ['c', 'cc', 'ccc']]
  21.   $.each(arr, function(i, item){
  22.   $.each(item,function(j,val){
  23.      alert(j);
  24.     alert(val);
  25.  });
  26. });
  27. alert(j)将输出为012012012
  28. alert(val)将输出为aaaaaabbbbbbcccccc
  29. each处理json数据,这个each就有更厉害了,能循环每一个属性
  30. var obj = { one:1, two:2, three:3};
  31.   each(obj, function(key, val) {
  32.   alert(key);
  33.   alert(val);
  34.   });
  35. 这里alert(key)将输出one two three
  36. alert(val)将输出one1two2three,3
  37. 这边为何key不是数字而是属性呢,因为json格式内是一组无序的属性-值,既然无序,又何来数字呢。
  38. 而这个val等同于obj[key]
  39. ecah处理dom元素,此处以一个input表单元素作为例子。
  40. 如果你dom中有一段这样的代码
  41. <input name="aaa" type="hidden" value="111" />
  42. <input name="bbb" type="hidden" value="222" />
  43. <input name="ccc" type="hidden" value="333" />
  44. <input name="ddd" type="hidden" value="444"/>
  45. 然后你使用each如下
  46. $.each($("input:hidden"), function(i,val){
  47. alert(val);
  48. alert(i);
  49. alert(val.name);
  50. alert(val.value);
  51. });
  52. 那么,alert(val)将输出[object HTMLInputElement],因为它是一个表单元素。
  53. alert(i)将输出为0123
  54. alert(val.name);将输出aaa,bbb,ccc,ddd,如果使用this.name将输出同样的结果
  55. alert(val.value); 将输出111,222,333,444,如果使用this.value将输出同样的结果
  56. $("input:hidden").each(function(i,val){
  57. alert(i);
  58. alert(val.name);
  59. alert(val.value);
  60. });
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注