js 一些小技巧

简介:

1,表单中,回车导致下一个表单元素聚焦

Js代码   收藏代码
  1. /*** 
  2. enter to make next object focus 
  3. */  
  4. var pressFocusNext=function(event,next22){  
  5.     if(!event ||event==undefined){  
  6.         event=window.event;   
  7.     }  
  8.     if(event.keyCode==13){//Enter  
  9.         if(typeof next22 == 'string'){  
  10.             next22=com.whuang.hsj.$$one(next22);  
  11.         }  
  12.         if(next22 && next22!=undefined){  
  13.             next22.focus();  
  14.         }  
  15.           
  16.     }  
  17. }  

 使用场景:

Html代码   收藏代码
  1. <form id="leaveMessageForm" style="margin-bottom: 4px;width: 100%"  >  
  2.                      
  3.                        <ul>  
  4.                            <li><label>单位名称</label><input type="text" name="company" placeholder="单位名称"  onkeypress="pressFocusNext(event,'username')" /></li>  
  5.                            <li><label>称呼</label><input type="text" name="username" placeholder="您的称呼" onkeypress="pressFocusNext(event,'email')" /></li>  
  6.                            <li><label>电话</label><input type="text" name="email" placeholder="您的电话号码"  onkeypress="pressFocusNext(event,'object')" /></li>  
  7.                            <li><label>留言标题</label><input type="text" name="object" placeholder="留言标题"  onkeypress="pressFocusNext(event,'content')" /></li>  
  8.                            <li class="ly" style="width:100%;" ><label  >留言内容</label>  
  9.                              
  10.                                <textarea  name="content" placeholder="留言内容" ></textarea>  
  11.                              
  12.                            </li>  
  13.                            <li class="submit"><input type="button" value="提交" onclick="ajaxSubmitMessage()"  /></li>  
  14.                            <li class="reset"><input type="reset"  id="resetId" value="重写"/></li>  
  15.   
  16.                        </ul>  
  17.                          
  18.                    </form>  
  19.                     

 

2,对某个表单控件回车触发指定事件

Js代码   收藏代码
  1. /*** 
  2.  enter to to something identified by responseEvent 
  3.  */  
  4. var pressEnterTo=function(event,responseEvent){  
  5.     if(!event ||event==undefined){  
  6.         event=window.event;  
  7.     }  
  8.     if(event.keyCode==13){//Enter  
  9.         responseEvent();  
  10.     }  
  11. };  

 使用场景:

Html代码   收藏代码
  1. <div id="register_user">  
  2.   
  3.                                         <h2  style="margin-right: -15px;margin-left: -15px" ><span class="fontawesome-user"></span>注册</h2>  
  4.   
  5.                                         <form action="#" method="POST">  
  6.   
  7.                                             <fieldset class="submit2">  
  8.   
  9.                                                 <p><label for="username">用户名</label></p>  
  10.   
  11.                                                 <p><input type="text" name="username" placeholder="用户名"  
  12.                                                           onkeypress="pressFocusNext(event,$('#register_user input[name=password]'))"  
  13.                                                           required></p>  
  14.   
  15.                                                 <p><label for="password">密码</label></p>  
  16.   
  17.                                                 <p><input type="password" name="password" placeholder="密码"  
  18.                                                           onkeypress="pressFocusNext(event,$('#repassword'))" required>  
  19.                                                 </p>  
  20.   
  21.                                                 <p><label for="repassword">确认密码</label></p>  
  22.   
  23.                                                 <p><input type="password" id="repassword" placeholder="确认密码"  
  24.                                                           onkeypress="pressFocusNext(event,$('#register_user input[name=email]'))"  
  25.                                                           required></p>  
  26.   
  27.                                                 <p><label for="email">电子邮箱</label></p>  
  28.   
  29.                                                 <p><input type="text" name="email" placeholder="电子邮箱"  
  30.                                                           onkeypress="pressEnterTo(event,user.register)" required></p>  
  31.   
  32.                                                 <p><input type="button" id="registerBtn" onclick="user.register();"  
  33.                                                           value="注册"></p>  
  34.   
  35.                                             </fieldset>  
  36.   
  37.                                         </form>  
  38.   
  39.                                     </div> <!-- end login -->  

 对最后一个表单元素回车时触发登录

3,使div居中

Js代码   收藏代码
  1. /*** 
  2.  * make dialog in center 
  3.  */  
  4. com.whuang.hsj.centerJQueryPos = function ($div22, isApplyVertical/*是否竖直方向也居中*/, isIncludeScroll/*是否包含滚动条高度*/) {  
  5.     var width = $div22.width();  
  6.     var height = $div22.height();  
  7.   
  8.   
  9.     var left = (getInner().width - width) / 2 + com.whuang.hsj.getScroll().left;  
  10.     var param = {'left': left};  
  11.     if (arguments.length === 1 || isApplyVertical) {//Vertical direction  
  12.         var top = (getInner().height - height) / 2;  
  13.         if (isIncludeScroll) {  
  14.             top = top + com.whuang.hsj.getScroll().top;  
  15.         }  
  16.         param['top'] = top;  
  17.     }  
  18.     $div22.css(param);  
  19. };//centerJQueryPos  
  20. com.whuang.hsj.centerX = function ($div22) {//只水平方向居中  
  21.     com.whuang.hsj.centerJQueryPos($div22, falsefalse);  
  22. };  
  23. com.whuang.hsj.centerXY = function ($div22) {//水平方向和竖直方向同时居中  
  24.     com.whuang.hsj.centerJQueryPos($div22, truefalse);  
  25. };  
//Cross browser gets the position of scroll
com.whuang.hsj.getScroll=function(){
    return {
        top:document.documentElement.scrollTop || document.body.scrollTop,
left:document.documentElement.scrollLeft || document.body.scrollLeft,
height:document.documentElement.scrollHeight ||document.body.scrollHeight
};
};
Js代码   收藏代码
  1.   

 使用场景:

Js代码   收藏代码
  1. if (isCenter) {  
  2.                jqueryObjParam.$dialogPanel.show('normal'function () {  
  3.                    com.whuang.hsj.centerXY(jqueryObjParam.$dialogPanel);  
  4.                    jqueryObjParam.$dialogPanel.css("position"'fixed');//保证固定在可视范围内  
  5.                });  
  6.   
  7.            }  

 注意:div的position的值必须是fixed或absolute

4,获取浏览器可视区域的大小,与是否有滚动条无关

Js代码   收藏代码
  1. //Cross browser gets the size of Visual area window,Have nothing to do with scroll bars  
  2. var getInner=(function() {  
  3.     // alert(typeof window.innerWidth !== 'undefined');  
  4.     if (typeof window.innerWidth !== 'undefined') {//Notice:'undefined' is right  
  5.         return function(){  
  6.             return {  
  7.                 width : window.innerWidth,  
  8.                 height : window.innerHeight  
  9.             }  
  10.         }  
  11.     } else {  
  12.         return function(){  
  13.             return {  
  14.                 width : document.documentElement.clientWidth,  
  15.                 height : document.documentElement.clientHeight  
  16.             }  
  17.         }  
  18.     }  
  19. })();  

 

 

5,日期格式化

Js代码   收藏代码
  1. /*** 
  2. format date or time 
  3. */  
  4. Date.prototype.format =function(format)  
  5. {  
  6.     var o = {  
  7.         "M+" : this.getMonth()+1, //month  
  8.         "d+" : this.getDate(), //day  
  9.         "h+" : this.getHours(), //hour  
  10.         "m+" : this.getMinutes(), //minute  
  11.         "s+" : this.getSeconds(), //second  
  12.         "q+" : Math.floor((this.getMonth()+3)/3), //quarter  
  13.         "S" : this.getMilliseconds() //millisecond  
  14.     }  
  15.     if(/(y+)/.test(format)) format=format.replace(RegExp.$1,  
  16.     (this.getFullYear()+"").substr(4- RegExp.$1.length));  
  17.     for(var k in o)if(new RegExp("("+ k +")").test(format))  
  18.     format = format.replace(RegExp.$1,  
  19.     RegExp.$1.length==1? o[k] :  
  20.     ("00"+ o[k]).substr((""+ o[k]).length));  
  21.     return format;  
  22. }  
  23. Date.prototype.format2 = function(fmt)     
  24. //author: meizz     
  25.   var o = {     
  26.     "%m" : this.getMonth()+1+'',                 //月份     
  27.     "%d" : this.getDate() + '',                  //日     
  28.     "%H" : this.getHours()+'',                   //小时     
  29.     "%M" : this.getMinutes()+'',                 //分     
  30.     "%S" : this.getSeconds()+''                //秒     
  31.     //"q+" : Math.floor((this.getMonth()+3)/3), //季度     
  32.   };     
  33.   // 年份  2015  
  34.   if(/(%Y)/.test(fmt))     
  35.     fmt=fmt.replace(RegExp.$1, (this.getFullYear()+""));   
  36.   
  37.   // 两位年份  15  
  38.   if(/(%y)/.test(fmt))     
  39.     fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(2));       
  40.   
  41.   //getTime返回的是以毫秒为单位的,转为秒  
  42.   if(/(%s)/.test(fmt))     
  43.     //fmt=fmt.replace(RegExp.$1, this.getTime()/1000);   
  44.     fmt=fmt.replace(RegExp.$1, (this.getTime()+'').slice(0, 10));   
  45.   
  46.   for(var k in o)     
  47.     if(new RegExp("("+ k +")").test(fmt)){     
  48.         fmt = fmt.replace(RegExp.$1, (o[k].length == 2 ? o[k] : '0' + o[k]));     
  49.     }  
  50.   return fmt;     
  51. }     

 常用场景:

Js代码   收藏代码
  1. var releaseDate=new Date(Number(obj.releaseTime)*1000).format('yyyy-MM-dd');//把毫秒数转化为日期  

 

 

6,设置和获取html元素的自定义属性

Js代码   收藏代码
  1. com.whuang.hsj.getCustomAttr=function(htmlNode22,attr)  
  2. {  
  3.     var hospitalId=htmlNode22[attr];  
  4.     if(hospitalId==undefined||hospitalId==null){  
  5.         hospitalId=htmlNode22.getAttribute(attr);  
  6.     }  
  7.     if(hospitalId==undefined||hospitalId==null){  
  8.         if(htmlNode22.attributes){  
  9.             hospitalId=htmlNode22.attributes[attr].nodeValue;  
  10.         }  
  11.     }  
  12.     return hospitalId;  
  13. }  
  14. com.whuang.hsj.setCustomAttr=function(htmlNode22,attr22,attrValue)  
  15. {  
  16.     if(htmlNode22.setAttribute===undefined)  
  17.     {  
  18.         htmlNode22.attributes[attr22].nodeValue = attrValue;  
  19.     }else{  
  20.         htmlNode22.setAttribute(attr22,attrValue);  // 设置自定义属性的值  
  21.     }  
  22. }  

 使用场景:

Js代码   收藏代码
  1. var currentPage=com.whuang.hsj.getCustomAttr($ul_list.get(0),"currentPage");  
  2.         var isOver=Boolean.parse(com.whuang.hsj.getCustomAttr($ul_list.get(0),"isOver2"));  
  3.  com.whuang.hsj.setCustomAttr(newsPanel_ul,"currentPage",data.currentpage);  
  4.             com.whuang.hsj.setCustomAttr(newsPanel_ul,"isOver2",data.over);  

 

7,使用jQuery时如何判断元素是否为空呢?

错误:if($thisForm==null)

正确:

Js代码   收藏代码
  1. if ($thisForm.length == 0) {  
  2.         alert("can not get form ,maybe not pass on form object.");  
  3.         return;  
  4.     }  

 

Js代码   收藏代码
  1. if(form.length==0){  
  2.         alert("没有找到表单");  
  3.         return;  
  4.     }  

 

通过length来判断,因为使用jquery获取元素,就算元素不存在也会返回一个对象.

8,如何判断参数是否为空

Js代码   收藏代码
  1. bbs.add_bbsReply = function (self) {  
  2.     if (cardid == null) {  
  3.         alert("cardid is null");  
  4.         return;  
  5.     }  
  6.     var $thisForm = null;  
  7.     if (arguments.length > 0) {//说明传入了参数self  
  8.         $thisForm = $(self);  
  9.     } else {  
  10.         $thisForm = $("#formBBS_reply");  
  11.     }  
  12. }  

范例: 

Js代码   收藏代码
  1. function tabSelect(url, aHref, isNav, showslider) {  
  2.     showMask();  
  3.     if (isNav) {  
  4.         $('#nav li').removeClass("current")/*.removeClass("focus ")*/;  
  5.     }  
  6.   
  7.     if (arguments.length > 3 && showslider) {  
  8.         $slider_carousel.show();  
  9.         $left_sidebar.show();  
  10.     } else {  
  11.         $slider_carousel.hide();  
  12.         $left_sidebar.hide();  
  13.     }  
  14.     ajaxHtml(url + "&recordsPerPage=5&random22=" + Math.random(), $exchangeDiv);//page.js  
  15.     if (isNav) {  
  16.         $(aHref).parent().addClass("current");  
  17.     }  
  18.     ui_tab_wh(jQuery);  
  19. }  

 

通过arguments.length来判断比通过self==null||self==undefined要好

9,创建对象

Js代码   收藏代码
  1. var tip = {};  

 10 使悬浮的div可以拖动

Js代码   收藏代码
  1. com.whuang.hsj.drag = function ($obj, hn) {  
  2.     if (arguments.length == 0) {  
  3.         return;  
  4.     }  
  5.     if ($obj == null || $obj == undefined) {  
  6.         return;  
  7.     }  
  8.     if (typeof  $obj == 'string') {//when $obj is a string  
  9.         $obj = $($obj);  
  10.     }  
  11.     var $hn = null;  
  12.     if (arguments.length > 1) {  
  13.         $hn = $obj.find(hn);//div h1,h2...  
  14.     } else {  
  15.         $hn = $obj.find("h2");  
  16.     }  
  17.     $hn.on({  
  18.         mousedown: function (e) {  
  19.             e.preventDefault();  
  20.             var t = $obj.offset(),  
  21.                 o = e.pageX - t.left,  
  22.                 i = e.pageY - t.top;  
  23.             //$obj.css("position", 'fixed');  
  24.             $(document).on("mousemove.drag"function (e) {  
  25.                 $obj.offset({  
  26.                     top: e.pageY - i,  
  27.                     left: e.pageX - o  
  28.                 })  
  29.             })  
  30.         },  
  31.         mouseup: function () {  
  32.             $(document).unbind("mousemove.drag");  
  33.             $obj.css("position"'fixed');  
  34.         }  
  35.     });  
  36. };//drag  

 使用场景:

Js代码   收藏代码
  1. com.whuang.hsj.drag("#subPagePanel""h2");//增加拖动对话框的功能  
  2.    com.whuang.hsj.drag("#subPageBBS""h2");  

 

 

相关文章
|
3月前
|
存储 JavaScript 前端开发
js的一些小技巧
js的一些小技巧
|
4月前
|
JavaScript
js的slice小技巧
js的slice小技巧
21 0
|
8月前
|
JSON JavaScript 前端开发
|
10月前
|
JavaScript
js小技巧(2)
js小技巧(2)
|
10月前
|
JavaScript
js超实用的小技巧(1)
js超实用的小技巧(1)
|
JSON 缓存 JavaScript
JS之12个小技巧
JS之12个小技巧
87 0
JS之12个小技巧
|
移动开发 JavaScript 算法
JS操作小技巧,工作简单了(二)
本文主要讲JS操作小技巧
113 0
|
JavaScript 前端开发
JS操作小技巧,工作简单了
在javaScript中,对象的属性链访问,很容易因为某一个属性不存在出现 Cannot read property 'xxx' of undefined的问题,那么Optional Chaining就添加了?.操作符,它会先判断前面的值,如果undefined或者null,就结束后面的调用,直接返回undefined;
130 0
|
监控 JavaScript 前端开发
Firebug 折腾记_(3)JS 调试小技巧
console.log(“我是日志信息,毫无色彩可言–我支持多个参数打印”); console.info(“我是带有信息图标的日志”); console.warn(“我是带有警告图标的日志”); console.error(“我是带有报错图标的日志”); console.dir(test); –可以遍历一个对象的全部属性”,console console.trace();–输出 Javascript 执行时的堆栈追踪。 console.group(“这是测试组”) console.log(“%d年%d月”,2015,08); console.log(“%f时”,5); console.log(
88 0
|
存储 JavaScript 前端开发
JS 中可以提升幸福度的小技巧
本文主要介绍一些JS中用到的小技巧,可以在日常Coding中提升幸福度,将不定期更新~ 感兴趣的同学可以加文末的微信群,一起讨论吧~
JS 中可以提升幸福度的小技巧