经常用到的一些js方法
2012-10-26 15:48
417 查看
//#######################计算类############################################################## //js运算经常容易内存溢出,使用以下方法进行四则运算就可以避免了 //放置位置:任意可以放的位置 //返回值:arg1加上arg2的精确结果 function accAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } m = Math.pow(10, Math.max(r1, r2)) return (arg1 * m + arg2 * m) / m } //返回值:arg1减上arg2的精确结果 function accSub(arg1, arg2) { return accAdd(arg1, -arg2); } //返回值:arg1乘以arg2的精确结果 function accMul(arg1, arg2) { var m = 0, s1 = arg1.toString(), s2 = arg2.toString(); try { m += s1.split(".")[1].length } catch (e) { } try { m += s2.split(".")[1].length } catch (e) { } return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m) } //返回值:arg1除以arg2的精确结果 function accDiv(arg1, arg2) { var t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toString().split(".")[1].length } catch (e) { } try { t2 = arg2.toString().split(".")[1].length } catch (e) { } with (Math) { r1 = Number(arg1.toString().replace(".", "")) r2 = Number(arg2.toString().replace(".", "")) return (r1 / r2) * pow(10, t2 - t1); } } //################验证是否为空######################################################################################### //使用本脚本前,请引入jquery1.4以上版本 //请不要把本脚本放在<head>中,最佳位置是放在</body>之前 //使用本脚本,需要引入valide.css //检查带有need的class,默认检查所有带need样式名的控件,如果想只验证某指定范围,指定customerRange即可。当满足条件时,将会把所有的 //带need的对象给添加一个input_red的class,并移除当前的input,将光标定位到第一个值为空的对象上 //使用方法:假设页面中有一个id为mydiv的div,我们要验证它里面包含的带.need的控件,这样写即可:ckEmpoty("#mydiv"); //注意,ckEmpoty返回的是bool类型,如果是验证表格的单行数据,请用下面的ckTabEmpty function ckEmpoty(customerRange) { var obj = $(".need:enabled:visible"); if (customerRange != "") { obj = $(customerRange + " .need:enabled:visible"); } if (obj.length > 0) { for (var i = 0; i < obj.length; i++) { if ($.trim(obj.eq(i).val()) == "") obj.eq(i).addClass("input_red"); } } var a = false; var redObj = $(customerRange + " .input_red"); if (redObj.length > 0) { redObj.eq(0).focus(); } else { a = true; } return a; } //检查指定范围中必须控件是否为空,本方法比较适用于验证table中单行数据,比如我们现在修改了某一些,然后提交当前行, //如果用上面的方法,会验证整个表格中的数据是否合法 //使用方法:先获取到当前控件所在的行,然后作为参数传入即可 //eg: var pobj=$(this).parent().parent();ckTabEmpty(pobj); //说明:用了两次parent(),是因为控件一般放在td中,控件的父容器是td,td的父容器是tr,所以pobj就是当前行了 //当然,如果要验证的控件在td的其它容器内,则需要用更多次parent(),总之,保证传入的对象是tr即可 function ckTabEmpty(rangeStr) { var obj = rangeStr.find(".need:enabled:visible"); if (obj.length > 0) { for (var i = 0; i < obj.length; i++) { if ($.trim(obj.eq(i).val()) == "") obj.eq(i).addClass("input_red"); } } var a = false; var redObj = rangeStr.find(".input_red"); if (redObj.length > 0) { redObj.eq(0).focus(); } else { a = true; } return a; } //验证某个容器中必须有一个或指定个数的checkbox不为空 //参数num为需要选中的个数 //因为一个页面中有可能有多个这样多选的情况,每个多选的限制可能不一样,有的只需选一个,有的需要几个以上,所以用一个容器来区分 function ckCheckboxInContainer(num, container) { if (isNaN(num)) return false; //如果不是数字,直接为假 var obj = $(container).find(":checked"); if (obj.length < num) return false; return true; } //本方法为上传图片的功能而写。当上传了图片后,图片预览框(div)内会有图片标记,而为空的div中是没有的 //上传图片时,预览图片的容器都有一个class="previews",本方法就以这个来获取已上传的图片个数 //注意:container为上传图片区域那里最大的一个容器 function ckEmptyDiv(num, container) { if (isNaN(num)) return false; //如果不是数字 var obj = $(container).find(".pdaddp_previews"); var count = 0; var img; for (var i = 0; i < obj.length; i++) { if (count >= num) return true; //大于等于num就可以了 img = obj.eq(i).html(); if (img.indexOf("img") >= 1) { count++; //如果内容不为空,则计数器加1 } } if (count >= num) return true; else return false; } //当带有need的class的对象值不再为空时,自动移除input_red $(".need:enabled:visible").live("keyup", function () { var obj = $(this); if ($.trim(obj.val()) != "") { obj.removeClass("input_red"); } else { obj.addClass("input_red"); } }); //当鼠标离开时,带有need的class的对象值不再为空时,自动移除input_red $(".need:enabled:visible").live("blur", function () { var obj = $(this); if ($.trim(obj.val()) != "") { obj.removeClass("input_red"); } }); //##################################常用格式验证######################################################################## ///本脚本为验证格式脚本,需要先引入jquery1.4以上版本 ///放置本脚本的最佳位置是</body>之前 //使用方法,给要验证的控件加相应的样式名即可,eg:class="email"表示是用邮箱格式来验证 //邮箱 $(".email:enabled:visible").live("change", function () { var em = $(this).val(); var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/; if (!reg.test(em)) { alert('邮箱不正确'); $(this).focus(); return; } }); //邮编 $(".zip:enabled:visible").live("change", function () { var zip = $(this).val(); if (zip != null && zip != "") { if (zip.length != 6) { alert("邮编位数不对"); $(this).focus(); return false; } else { var rexTel = /^[0-9]+$/; if (!rexTel.test(zip)) { alert("邮编不规范"); $(this).focus(); return false; } } } return true; }); //传真 $(".fax:enabled:visible").live("change", function () { var fax = $(this).val(); if (fax != null || fax != "") { var reg = /(^[0-9]{3,4}\-[0-9]{7,8}\-[0-9]{3,4}$)|(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}\-[0-9]{3,4}$)|(^[0-9]{7,15}$)/; if (!reg.test(fax)) { alert("传真格式不正确"); $(this).focus(); return false; } } }); //电话 $(".tel:enabled:visible").live("change", function () { var tel = $(this).val(); if (tel != null || tel != "") { var reg = /(^[0-9]{3,4}\-[0-9]{7,8}\-[0-9]{3,4}$)|(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}\-[0-9]{3,4}$)|(^[0-9]{7,15}$)/; if (!reg.test(tel)) { alert("电话格式不正确"); $(this).focus(); return false; } } }); //######################################验证数字######################################################################### //使用本脚本需要先引入jquery1.4以上版本 //使用本脚本,不要放在head中,最佳位置是</body>前面 //使用方法:引入本脚本,然后在需要验证的控件上加isnum的样式,如:<input type="text" class="isnum" id="你自己的控件ID" /> //处理多余小数点 function checkXishudian(v) { var result = v; var arr = v.split("."); if (arr.length > 2)//说明出现两次以上小数点 { var firstv = arr[0]; var afterv = v.substring(firstv.length + 1); afterv = afterv.replace(".", ""); result = firstv + "." + afterv; } return result; } /* 参数说明: ckValue:要被检测的值 isAllowLtZero:是否允许小于0 isInt:是否必须为整数 digits:小数精度 */ function checkDataAndReturn(ckValue, isAllowLtZero, isInt, digits) { if ($.trim(ckValue) == "") return; var o = ckeckMinus(ckValue); //去掉非数字 o = checkXishudian(o); //处理多余小数点 if (!isAllowLtZero) { if (o < 0) o = accSub(0, o); } if (isInt) digits = 0; if (digits < 0) digits = 0; var result = o.toString(); if (result == "") return 0; var arr = result.split("."); if (digits == 0) { result = arr[0]; } else { result = arr[0]; if (arr.length > 1) { if (arr[1].length > digits) result += "." + arr[1].substring(0, digits); else result += "." + arr[1]; } } return result; } //处理字符中的减号 function ckeckMinus(v) { if (v == "") return ""; var firstv = 0; var afterv = ""; if (v != "") { firstv = v.substring(0, 1); if (v.length > 1) afterv = v.substring(1); } if (firstv == "-") { if (afterv != "") { afterv = afterv.replace(/[^\d\.]/g, ""); return firstv + afterv; } else return v; } else { return v.replace(/[^\d\.]/g, ""); } } //必须填数字的控件事件 $(".isnum:enabled:visible").live("change", function () { var obj = $(this); if (obj.val() == "") return; var re = ckeckMinus(obj.val()); var minnum = obj.attr("minnum"); var maxnum = obj.attr("maxnum"); if (minnum != undefined && !isNaN(minnum)) { if (accSub(re, minnum) < 0) re = minnum; } var maxnum = obj.attr("maxnum"); if (maxnum != undefined && !isNaN(maxnum)) { if (accSub(re, maxnum) > 0) { re = maxnum; } } if (re == "") { if (obj.hasClass("need")) { obj.addClass("input_red"); } } obj.val(re); }); //处理是否有减号等 $(".isnum:enabled:visible").live("change", function () { var obj = $(this); if (obj.val() == "") return; var res = checkDataAndReturn(obj.val(), false, true, 2); if (res == "") { if (obj.hasClass("need")) { obj.addClass("input_red"); } } obj.val(res); }); //$(".isnum:enabled:visible").live("blur", function () { // var obj = $(this); // var re = ""; // if (obj.attr("minnum") != undefined && !isNaN(obj.attr("minnum"))) { // re = obj.attr("minnum"); // } // if (re == "") { // maxnum = obj.attr("maxnum"); // if (maxnum != undefined && isNaN(maxnum)) { // re = maxnum; // } // } // if (re != "") { // obj.val(re); // if (obj.hasClass("input_red")) { // obj.removeClass("input_red"); // } // } //}); //$(".isnum:enabled:visible").live("focus", function () { // var obj = $(this); // if (obj.val() == "0") obj.val(""); //}); //必须填数字的控件事件 $(".isdb:enabled:visible").live("change", function () { var obj = $(this); if (obj.val() == "") return; var re = ckeckMinus(obj.val()); var minnum = obj.attr("minnum"); if (minnum != undefined && !isNaN(minnum)) { if (accSub(re, minnum) < 0) re = minnum; } var maxnum = obj.attr("maxnum"); if (maxnum != undefined && !isNaN(maxnum)) { if (accSub(re, maxnum) > 0) { re = maxnum; } } if (re == "") { if (obj.hasClass("need")) { obj.addClass("input_red"); } } obj.val(re); }); //处理是否有减号等 $(".isdb:enabled:visible").live("change", function () { var obj = $(this); if (obj.val() == "") return; var res = checkDataAndReturn(obj.val(), false, false, 2); obj.val(res); }); //$(".isdb:enabled:visible").live("blur", function () { // var obj = $(this); // if (obj.val() == "") { // return; // } // //if (obj.val() == "") obj.val(0); // if (obj.hasClass("input_red")) { // obj.removeClass("input_red"); // } //}); //$(".isdb:enabled:visible").live("focus", function () { // var obj = $(this); // if (obj.val() == "") { // return; // } // //if (obj.val() == "0") obj.val(""); //}); //比较时间,如果time2比time1大,则为true,否则为false function ValidDate(time1, time2) { if (time1 == "" || time2 == "") return false; var arr1 = time1.split("-"); var arr2 = time2.split("-"); if (arr1.length != 3 || arr2.length != 3) return false; /* var date1 = Date.parse(time1); var date2 = Date.parse(time2); */ var date1 = new Date(arr1[0], arr1[1], arr1[2]); var date2 = new Date(arr2[0], arr2[1], arr2[2]); return date2 > date1; } //替换某jq对象中的特殊符号 function filterSign(oldStr) { var reg = /@|\||"/g; var str = oldStr.replace(reg, ""); var re = new RegExp("<", "gi"); str = str.replace(re, "["); re = new RegExp(">", "gi"); str = str.replace(re, "]"); return str; }
相关文章推荐
- 一些经常会用到的原生JS方法
- 总结:Js中可能用到的一些小方法
- [docker]一些经常用到的docker容器启动方法
- 做网站经常会用到的一些js效果
- 做网站经常会用到的一些js效果
- js验证表单(都是一些经常要用到的)
- 一些经常用到的Check方法(Java)
- 整理一些经常用到的js代码(一) 不断更新中。。。
- js用到的一些工具方法
- 一些经常用到的方法
- 整理一些最近项目中用到的一些JS方法
- 记录一些长用到的js方法
- servlet里经常会用到一些GET方法
- js 经常用到的一下方法
- [置顶] 前段开发 一些经常用到的js插件
- [docker]一些经常或不经常用到的镜像启动方法
- js中用到的一些属性方法
- servlet里经常会用到的一些GET方法
- 一些经常用到的Check方法(Java) validate 1
- js一些工作中经常用到的脚本