JavaScript常用方法函数收集(验证类居多)

收集了一些比较常用的javascript函数。

注意:以下方法主要来源于网络,有些方法的实现并不完善,甚至有的方法可能存在bug,因此仅作参考!!!

检查校验
在div:SceneTipbox中显示错误信息

/** 在div:SceneTipbox中显示错误信息 */

function doError(obj, remindWord, showFashion, isFocus) {

               if (showFashion == '0') {

                               alert(remindWord);

               } else if (showFashion == '1') {

                               document.getElementById('SceneTipbox').innerHTML = remindWord;

               }

               if (isFocus == '1') {

                               obj.focus();

               }

}

清空显示内容

/** 清空显示内容 */

function clean(showFashion) {

               if (showFashion == '1') {

                               document.getElementById('SceneTipbox').innerHTML = "";

               }

}

检查文本框是否未输入

/** 检查文本框是否未输入 */

function checkInputIsNotNull(obj, remindWord, showFashion, isFocus) {

               clean('1');

               var data = obj.value;

               if (trim(data) == "") {

                               doError(obj, remindWord, showFashion, isFocus);

                               return false;

               }

               obj.value = trim(data);

               return true;

}

 

检查输入是否是纯数字(不带小数点)

/** 检查输入是否是纯数字(不带小数点) */

function isNumber(obj, remindWord, showFashion, isFocus) {

               var reg=/^[\d]+$/;

               if(!reg.test(obj.value)){

                               doError(obj, remindWord, showFashion, isFocus);

                               return false;

               }

               return true;

}

 

检查输入是否是纯数字(带小数点)

/** 检查输入是否是纯数字(带小数点) */

function isNumber1(obj, remindWord, showFashion, isFocus) {

               var reg=/^[\d.]+$/;

               if(!reg.test(obj.value)){

                               doError(obj, remindWord, showFashion, isFocus);

                               return false;

               }

               return true;

}

 

检查是否是电话号码(11位手机号或固定电话(09511234567))

/** 检查是否是电话号码(11位手机号或固定电话(09511234567)) */

function isPhone(obj, remindWord, showFashion, isFocus) {

               var reg=/^[\d]+$/;

               if(!reg.test(obj.value)){

                               doError(obj, remindWord, showFashion, isFocus);

                               return false;

               }

               if(obj.value.length!=11){

                               doError(obj, remindWord, showFashion, isFocus);

                               return false;

               }

               return true;

}

 

检查邮政编码

/** 检查邮政编码 */

function checkZip(obj, remindWord, showFashion, isFocus) {

               clean('1');

               var reg=/^[0-9]{6}$/;

               if (!reg.test(obj.value)) {

                               doError(obj, remindWord, showFashion, isFocus);

                               return false;

               }

               return true;

}

 

检查日期是否是1996-06-06这样的格式

/** 检查日期是否是1996-06-06这样的格式 */

function checkDate(obj, remindWord, showFashion, isFocus){

               var reg=/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;

               if(!reg.test(obj.value)){

                               doError(obj, remindWord, showFashion, isFocus);

                               return false;

               }

               return true;

}

 

检查生日

/** 检查生日 */

function checkBir(obj, remindWord, showFashion, isFocus) {

               clean('1');

               var bir = /^[^0]\d{3}-\d{2}-\d{2}/;

               if (!bir.test(obj.value)) {

                               doError(obj, remindWord, showFashion, isFocus);

                               return false;

               }

               return true;

}

 

检查证件号

/** 检查证件号 */

function checkIDCard(idcard, certificatetype, birthday, sex, remindWord) {

               clean('1');

               var idcardObj = eval("document.forms[0]." + idcard);

               var certificatetypeObj = eval("document.forms[0]." + certificatetype);

               var birthdayObj = eval("document.forms[0]." + birthday);

               var sexObj = eval("document.forms[0]." + sex);

               // 判断证件类型为身份证

               if (certificatetypeObj.value == "0") {

                               if (idcardObj.value != '') {

                                              if (idcardObj.value.length != 18) {//idcardObj.value.length != 15 &&

                                                             if (typeof (document.getElementById('SceneTipbox')) == "object") {

                                                                            document.getElementById('SceneTipbox').innerHTML = remindWord;

                                                             } else {

                                                                            alert(remindWord);

                                                             }

                                                             return false;

                                              }

                                              //if (idcardObj.value.length == 15) {

                                              //             var birth = "19" + idcardObj.value.substring(6, 8) + "-"

                                              //                                            + idcardObj.value.substring(8, 10) + "-"

                                              //                                            + idcardObj.value.substring(10, 12);

                                              //             document.forms[0].birthday.value = birth;

                                              //             var tempSex;

                                              //             tempSex = idcardObj.value.substring(14, 15);

                                              //             if (tempSex == 'x' || tempSex == 'X') {

                                              //             } else {

                                              //                             tempSex = parseInt(tempSex);

                                              //                             if (tempSex % 2 == 0) {

                                              //                                            document.forms[0].sex.value = '1';

                                              //                             } else {

                                              //                                            document.forms[0].sex.value = '0';

                                              //                             }

                                              //             }

                                              //}

 

                                              if (idcardObj.value.length == 18) {

                                                             var birth = idcardObj.value.substring(6, 10) + "-"

                                                                                            + idcardObj.value.substring(10, 12) + "-"

                                                                                            + idcardObj.value.substring(12, 14);

                                                             document.forms[0].birthday.value = birth;

                                                             var tempSex;

                                                             tempSex = idcardObj.value.substring(16, 17);

                                                             if (tempSex == 'x' || tempSex == 'X') {

                                                             } else {

                                                                            tempSex = parseInt(tempSex);

                                                                            if (tempSex % 2 == 0) {

                                                                                            document.forms[0].sex.value = '1';

                                                                            } else {

                                                                                            document.forms[0].sex.value = '0';

                                                                            }

                                                             }

                                              }

                               }

               }

               if (idcardObj.value == '') {

                               if (typeof (document.getElementById('SceneTipbox')) == "object") {

                                              document.getElementById('SceneTipbox').innerHTML = remindWord;

                               } else {

                                              alert(remindWord);

                               }

               }

               return true;

}


判断是否为数字类型

function isDigit(value) {

               var patrn = /^[0-9]*$/;

               if (patrn.exec(value) == null || value == "") {

                               return false

               } else {

                               return true

               }

}

检验URL链接是否有效

function getUrlState(URL){

               var xmlhttp = new ActiveXObject("microsoft.xmlhttp");

               xmlhttp.Open("GET",URL, false); 

               try{ 

                                              xmlhttp.Send();

               }catch(e){

               }finally{

                               var result = xmlhttp.responseText;

                               if(result){

                                              if(xmlhttp.Status==200){

                                                             return(true);

                                               }else{

                                                                return(false);

                                               }

                                }else{

                                               return(false);

                                }

               }

}

String.prototype拓展方法
截取字符串

//js截取字符串,中英文都能用

//如果给定的字符串大于指定长度,截取指定长度返回,否者返回源字符串。

//字符串,长度

/**

 * js截取字符串,中英文都能用

 * @param str:需要截取的字符串

 * @param len: 需要截取的长度

 */

function cutstr(str, len) {

               var str_length = 0;

               var str_len = 0;

               str_cut = new String();

               str_len = str.length;

               for (var i = 0; i < str_len; i++) {

                               a = str.charAt(i);

                               str_length++;

                               if (escape(a).length > 4) {

                                              //中文字符的长度经编码之后大于4

                                              str_length++;

                               }

                               str_cut = str_cut.concat(a);

                               if (str_length >= len) {

                                              str_cut = str_cut.concat("...");

                                              return str_cut;

                               }

               }

               //如果给定字符串小于指定长度,则返回源字符串;

               if (str_length < len) {

                               return str;

               }

}

替换全部

String.prototype.replaceAll = function(s1, s2) {

               return this.replace(new RegExp(s1, "gm"), s2)

}

清除空格

String.prototype.trim = function() {

               var reExtraSpace = /^\s*(.*?)\s+$/;

               return this.replace(reExtraSpace, "$1")

}

 String.prototype.trim = function() {

    var str = this,

    str = str.replace(/^\s\s*/''),

    ws = /\s/,

    i = str.length;

    while (ws.test(str.charAt(--i)));

    return str.slice(0, i + 1);

  }

清除左空格/右空格

function ltrim(s){ return s.replace( /^(\s*| *)/, ""); }

function rtrim(s){ return s.replace( /(\s*| *)$/, ""); }

判断是否以某个字符串开头

String.prototype.startWith = function (s) {

               return this.indexOf(s) == 0

}

判断是否以某个字符串结束

String.prototype.endWith = function (s) {

               var d = this.length - s.length;

               return (d >= 0 && this.lastIndexOf(s) == d)

}

清除相同的数组
String.prototype.unique=function(){
               var x=this.split(/[\r\n]+/);
               var y='';
               for(var i=0;i<x.length;i++){
                               if(!new RegExp("^"+x.replace(/([^\w])/ig,"\\$1")+"$","igm").test(y)){
                                              y+=x+"\r\n"
                               }
               }
               return y
}
boolean startWith(str)

//拓展String的方法,返回是否以str为开头

String.prototype.startWith=function(str){

               if(str==null||str==""||this.length==0||str.length>this.length)

                               return false;

               if(this.substr(0,str.length)==str)

                               return true;

               else

                               return false;

               return true;

}

String trim() 去除两边空格

String.prototype.trim = function() {

               return this.replace(/(^\s*)|(\s*$)/g, "");

};

String ltrim() 去除左边空格

String.prototype.ltrim = function() {

               return this.replace(/(^\s*)/g, "");

};

String rtrim() 去除右边空格

String.prototype.rtrim = function() {

               return this.replace(/(\s*$)/g, "");

};

boolean startWith(str) 是否是以str开头

String.prototype.startWith = function(str) {

               var reg = new RegExp("^" + str);

               return reg.test(this);

};

boolean endWith(str) 是否是以str结尾

String.prototype.endWith = function(str) {

               var reg = new RegExp(str + "$");

               return reg.test(this);

};

String removeLineEnd() 去除行尾

String.prototype.removeLineEnd = function() {

               return this.replace(/(<.+?\s+?)(?:\n\s*?(.+?=".*?"))/g, '$1 $2');

};

int realLength() 返回字符串实长(中文字符算2位长度)

String.prototype.realLength = function() {

               ///<summary>获得字符串实际长度,中文2,英文1</summary>

               var realLength = 0, len = this.length, charCode = -1;

               for (var i = 0; i < len; i++) {

                               charCode = this.charCodeAt(i);

                               if (charCode >= 0 && charCode <= 128) realLength += 1;

                               else realLength += 2;

               }

               return realLength;

}

Array.拓展方法
boolean contains(obj)

//拓展Array的方法,返回数组是否包含该元素。包含返回true,不包含返回false

Array.prototype.contains = function (obj) {

               for (var i = 0; i < this.length; i++) {

                               if (this[i] == obj) {

                                              return true;

                               }

               }

               return false;

}

int indexOf(obj) 返回元素在数组中的索引位置

//拓展Array的方法,返回元素所在的索引位置。若该元素不在数组中,则返回-1

if(!Array.indexOf){

               Array.prototype.indexOf = function (obj) {

                               for(var i=0; i<this.length; i++){

                                              if(this[i] == obj){

                                                             return i;

                                              }

                               }

                               return -1;

               }

}

void remove(index) 删除数组元素

/*

 *  方法:Array.remove(dx) 通过遍历,重构数组

 *  功能:删除数组元素.

 *  参数:dx删除元素的下标.

 */

Array.prototype.remove = function(dx) {

               if (isNaN(dx) || dx > this.length) {

                               return false;

               }

               for ( var i = 0, n = 0; i < this.length; i++) {

                               if (this[i] != this[dx]) {

                                              this[n++] = this[i];

                               }

               }

               this.length -= 1;

}

Date拓展方法
时间日期格式转换

Date.prototype.Format = function(formatStr) {

               var str = formatStr;

               var Week = ['日', '一', '二', '三', '四', '五', '六'];

               str = str.replace(/yyyy|YYYY/, this.getFullYear());

               str = str.replace(/yy|YY/, (this.getYear() % 100) > 9 ? (this.getYear() % 100).toString() : '0' + (this.getYear() % 100));

               str = str.replace(/MM/, (this.getMonth() + 1) > 9 ? (this.getMonth() + 1).toString() : '0' + (this.getMonth() + 1));

               str = str.replace(/M/g, (this.getMonth() + 1));

               str = str.replace(/w|W/g, Week[this.getDay()]);

               str = str.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : '0' + this.getDate());

               str = str.replace(/d|D/g, this.getDate());

               str = str.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString() : '0' + this.getHours());

               str = str.replace(/h|H/g, this.getHours());

               str = str.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : '0' + this.getMinutes());

               str = str.replace(/m/g, this.getMinutes());

               str = str.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : '0' + this.getSeconds());

               str = str.replace(/s|S/g, this.getSeconds());

               return str

}

一个简单的日期时间格式化
Date.prototype.format=function(format){
               format = format || ”%Y-%m-%d %H:%M:%S”;
               var formatDic = {
                               ”%Y”:this.getFullYear();
                               ”%m”:this.getMonth() + 1;
                               ”%d”:this.getDate ();
                               ”%H”:this.getHours();
                               ”%M”:this.getMinutes();
                               ”%S”:this.getSeconds();
               }
               return format.replace(/(\%\w)/g, function($1) { var value=formatDic[$1]; return value<10 ? “0”+value : value;});
}
日期格式化函数+调用方法
Date.prototype.format = function(format){
               var o = {
                               "M+" : this.getMonth()+1, //month
                               "d+" : this.getDate(),              //day
                               "h+" : this.getHours(),   //hour
                               "m+" : this.getMinutes(), //minute
                               "s+" : this.getSeconds(), //second
                               "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
                               "S" : this.getMilliseconds() //millisecond
               };
               if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
(this.getFullYear()+"").substr(4 - RegExp.$1.length));
               for(var k in o){
                               if(new RegExp("("+ k +")").test(format))
                                              format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] :("00"+ o[k]).substr((""+ o[k]).length));
               }
               return format;
}
alert(new Date().format("yyyy-MM-dd hh:mm:ss"));
String format(pattern)

Date.prototype.format = function(format) {

               var o = {

                               "M+" : this.getMonth() + 1, // month

                               "d+" : this.getDate(), // day

                               "h+" : this.getHours(), // hour

                               "m+" : this.getMinutes(), // minute

                               "s+" : this.getSeconds(), // second

                               "q+" : Math.floor((this.getMonth() + 3) / 3), // quarter

                               "S" : this.getMilliseconds() // millisecond

               };

               if (/(y+)/.test(format))

                               format = format.replace(RegExp.$1, (this.getFullYear() + "")

                                                             .substr(4 - RegExp.$1.length));

               for ( var k in o)

                               if (new RegExp("(" + k + ")").test(format))

                                              format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k]

                                                                            : ("00" + o[k]).substr(("" + o[k]).length));

               return format;

};

 

Date DateAdd(interval, number) 日期加减

Date.prototype.DateAdd =function(interval,number)

{

/*

  *   功能:实现DateAdd功能.

  *   参数:interval,字符串表达式,表示要添加的时间间隔.

  *   参数:number,数值表达式,表示要添加的时间间隔的个数.

  *   返回:新的时间对象.

  *   varnow   =   newDate();

  *   varnewDate   =   DateAdd( "d ",5,now);

*---------------DateAdd(interval,number)-----------------

  */

switch(interval)

        {

case   "y"   :   {

this.setFullYear(this.getFullYear()+number);

                        return   this;

                        break;

}

case   "q"   :   {

this.setMonth(this.getMonth()+number*3);

                        return   this;

                        break;

}

case   "m"   :   {

this.setMonth(this.getMonth()+number);

                        return   this;

                        break;

}

case   "w"   :   {

this.setDate(this.getDate()+number*7);

                        return   this;

                        break;

}

case   "d"   :   {

this.setDate(this.getDate()+number);

                        return   this;

                        break;

}

case   "h"   :   {

this.setHours(this.getHours()+number);

                        return   this;

                        break;

}

default   :   {

      this.setDate(d.getDate()+number);

                        return   this;

                        break;

}

        }

};

boolean isLeapYear() 判断当前年份是否是闰年

// 判断年份是否是闰年;true -- 表示闰年;false -- 平年

Date.prototype.isLeapYear = function() {

               var year = this.getFullYear();

               if (year % 4 == 0 && (year % 100 != 0) || (year % 400 == 0)) {

                               return true;

               }

               return false;

};

Element拓展方法
为元素添加on方法

Element.prototype.on = Element.prototype.addEventListener;

NodeList.prototype.on = function (event, fn) {、

               []['forEach'].call(this, function (el) {

                               el.on(event, fn);

               });

               return this;

};

为元素添加trigger方法

Element.prototype.trigger = function (type, data) {

               var event = document.createEvent('HTMLEvents');

               event.initEvent(type, true, true);

               event.data = data || {};

               event.eventName = type;

               event.target = this;

               this.dispatchEvent(event);

               return this;

};

 

NodeList.prototype.trigger = function (event) {

               []['forEach'].call(this, function (el) {

                               el['trigger'](event);

               });

               return this;

};

格式化CSS样式代码

function formatCss(s){//格式化代码

               s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");

               s = s.replace(/;\s*;/g, ";"); //清除连续分号

               s = s.replace(/\,[\s\.\#\d]*{/g, "{");

               s = s.replace(/([^\s])\{([^\s])/g, "$1 {\n\t$2");

               s = s.replace(/([^\s])\}([^\n]*)/g, "$1\n}\n$2");

               s = s.replace(/([^\s]);([^\s\}])/g, "$1;\n\t$2");

               return s;

}

压缩CSS样式代码

function compressCss (s) {//压缩代码

               s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //删除注释

               s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");

               s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容错处理

               s = s.replace(/;\s*;/g, ";"); //清除连续分号

               s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白

               return (s == null) ? "" : s[1];

}

获取当前路径

var currentPageUrl = "";

if (typeof this.href === "undefined") {

               currentPageUrl = document.location.toString().toLowerCase();

}else {

               currentPageUrl = this.href.toString().toLowerCase();

}

Functions
取得value值的实际长度

function getRealLength(value){

               ///<summary>获得字符串实际长度,中文2,英文1</summary>

               var realLength = 0, len = value.length, charCode = -1;

               for (var i = 0; i < len; i++) {

                               charCode = value.charCodeAt(i);

                               if (charCode >= 0 && charCode <= 128) realLength += 1;

                               else realLength += 2;

               }

               return realLength;

}

输入框只能输数字

<input type="text" name="text" onKeyPress="if(event.keyCode<48||event.keyCode>57)event.returnValue=false;"/>

全局readOnly输入框背景色变灰

$(document).ready(function(){

               $("input[readOnly]").css("background", "#EEEEEE");//全局readOnly输入框背景色置灰

});

去除字符串中的空格等字符

/** 去除字符串中的空格等字符 */

function trim(data) {

               var str = data + "";

               if (str.length == 0)

                               return str;

               var re = /^\s*/;

               str = str.replace(re, '');

               re = /\s*$/;

               return str.replace(re, '');

}

字符串长度截取

function cutstr(str, len) {

               var temp,

                               icount = 0,

                               patrn = /[^\x00-\xff]/,

                               strre = "";

               for (var i = 0; i < str.length; i++) {

                               if (icount < len - 1) {

                                              temp = str.substr(i, 1);

                                                             if (patrn.exec(temp) == null) {

                                                                icount = icount + 1

                                              } else {

                                                             icount = icount + 2

                                              }

                                              strre += temp

                                              } else {

                                              break;

                               }

               }

               return strre + "..."

}

转义html标签

function HtmlEncode(text) {

               return text.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>')

}

设置cookie值

function setCookie(name, value, Hours) {

               var d = new Date();

               var offset = 8;

               var utc = d.getTime() + (d.getTimezoneOffset() * 60000);

               var nd = utc + (3600000 * offset);

               var exp = new Date(nd);

               exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);

               document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"

}

获取cookie值

function getCookie(name) {

               var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));

               if (arr != null) return unescape(arr[2]);

               return null

}

加入收藏夹

function AddFavorite(sURL, sTitle) {

               try {

                               window.external.addFavorite(sURL, sTitle)

               } catch(e) {

                               try {

                                              window.sidebar.addPanel(sTitle, sURL, "")

                               } catch(e) {

                                              alert("加入收藏失败,请使用Ctrl+D进行添加")

                               }

               }

}

设为首页

function setHomepage() {

               if (document.all) {

                               document.body.style.behavior = 'url(#default#homepage)';

                               document.body.setHomePage('http://w3cboy.com')

               } else if (window.sidebar) {

                               if (window.netscape) {

                                              try {

                                                             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")

                                              } catch(e) {

                                                             alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true")

                                                             }

                               }

                               var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);

                               prefs.setCharPref('browser.startup.homepage', 'http://w3cboy.com')

               }

}

加载样式文件

function LoadStyle(url) {

               try {

                               document.createStyleSheet(url)

               } catch(e) {

                               var cssLink = document.createElement('link');

                               cssLink.rel = 'stylesheet';

                               cssLink.type = 'text/css';

                               cssLink.href = url;

                               var head = document.getElementsByTagName('head')[0];

                               head.appendChild(cssLink)

               }

}

返回脚本内容

function evalscript(s) {

               if(s.indexOf('<script') == -1) return s;

               var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;

               var arr = [];

               while(arr = p.exec(s)) {

                               var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i;

                               var arr1 = [];

                               arr1 = p1.exec(arr[0]);

                               if(arr1) {

                                              appendscript(arr1[1], '', arr1[2], arr1[3]);

                               } else {

                                              p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;

                                              arr1 = p1.exec(arr[0]);

                                              appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);

                               }

               }

               return s;

}

清除脚本内容

function stripscript(s) {

               return s.replace(/<script.*?>.*?<\/script>/ig, '');

}

动态加载脚本文件

function appendscript(src, text, reload, charset) {

               var id = hash(src + text);

               if(!reload && in_array(id, evalscripts)) return;

               if(reload && $(id)) {

                               $(id).parentNode.removeChild($(id));

               }

 

               evalscripts.push(id);

               var scriptNode = document.createElement("script");

               scriptNode.type = "text/javascript";

               scriptNode.id = id;

               scriptNode.charset = charset ? charset : (BROWSER.firefox ? document.characterSet : document.charset);

               try {

                               if(src) {

                                              scriptNode.src = src;

                                              scriptNode.onloadDone = false;

                                              scriptNode.onload = function () {

                                                             scriptNode.onloadDone = true;

                                                             JSLOADED[src] = 1;

                                               };

                                               scriptNode.onreadystatechange = function () {

                                                              if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode.onloadDone) {

                                                                            scriptNode.onloadDone = true;

                                                                            JSLOADED[src] = 1;

                                                             }

                                               };

                               } else if(text){

                                              scriptNode.text = text;

                               }

                               document.getElementsByTagName('head')[0].appendChild(scriptNode);

               } catch(e) {}

}

返回按ID检索的元素对象

function $(id) {

               return !id ? null : document.getElementById(id);

}

跨浏览器绑定事件

function addEventSamp(obj,evt,fn){

               if(!oTarget){return;}

               if (obj.addEventListener) {

                               obj.addEventListener(evt, fn, false);

               }else if(obj.attachEvent){

                               obj.attachEvent('on'+evt,fn);

               }else{

                               oTarget["on" + sEvtType] = fn;

               }

}

跨浏览器删除事件

function delEvt(obj,evt,fn){

               if(!obj){return;}

               if(obj.addEventListener){

                               obj.addEventListener(evt,fn,false);

               }else if(oTarget.attachEvent){

                               obj.attachEvent("on" + evt,fn);

               }else{

                               obj["on" + evt] = fn;

               }

}

完美判断是否为网址

function IsURL(strUrl) {

               var regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/i

               if (regular.test(strUrl)) {

                               return true;

               }else {

                               return false;

               }

}

getElementsByClassName
function getElementsByClassName(name) {
               var tags = document.getElementsByTagName('*') || document.all;
               var els = [];
               for (var i = 0; i < tags.length; i++) {
                               if (tags.className) {
                                              var cs = tags.className.split(' ');
                                              for (var j = 0; j < cs.length; j++) {
                                                             if (name == cs[j]) {
                                                                            els.push(tags);
                                                                            break;
                                                             }
                                              }
                               }
               }
               return els
}
获取页面高度
function getPageHeight(){
               var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat" ? a : g.documentElement;
               return Math.max(f.scrollHeight, a.scrollHeight, d.clientHeight);
}
获取页面scrollLeft
function getPageScrollLeft(){
               var a = document;
               return a.documentElement.scrollLeft || a.body.scrollLeft;
}
获取页面可视宽度
function getPageViewWidth(){
               var d = document, a = d.compatMode == "BackCompat"
                                                                            ? d.body
                                                                            : d.documentElement;
               return a.clientWidth;
}
获取页面宽度
function getPageWidth(){
               var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat" ? a : g.documentElement;
               return Math.max(f.scrollWidth, a.scrollWidth, d.clientWidth);
}
获取页面scrollTop
function getPageScrollTop(){
               var a = document;
               return a.documentElement.scrollTop || a.body.scrollTop;
}
获取页面可视高度
function getPageViewHeight() {
               var d = document, a = d.compatMode == "BackCompat"
                                                                            ? d.body
                                                                            : d.documentElement;
               return a.clientHeight;
}
去掉url前缀
function removeUrlPrefix(a){
               a=a.replace(//g,":").replace(//g,".").replace(//g,"/");
               while(trim(a).toLowerCase().indexOf("http://")==0){
                               a=trim(a.replace(/http:\/\//i,""));
               }
               return a;
}
随机数时间戳
function uniqueId(){
               var a=Math.random,b=parseInt;
               return Number(new Date()).toString()+b(10*a())+b(10*a())+b(10*a());
}
全角半角转换
//iCase: 0全到半,1半到全,其他不转化
function chgCase(sStr,iCase){
               if(typeof sStr != "string" || sStr.length <= 0 || !(iCase === 0 || iCase == 1)){
                               return sStr;
               }
               var i,oRs=[],iCode;
               if(iCase){/*->*/
                               for(i=0; i<sStr.length;i+=1){ 
                                              iCode = sStr.charCodeAt(i);
                                              if(iCode == 32){
                                                             iCode = 12288;                                                                                                      
                                              }else if(iCode < 127){
                                                             iCode += 65248;
                                              }
                                                             oRs.push(String.fromCharCode(iCode)); 
                                              }                                                            
               }else{/*->*/
                               for(i=0; i<sStr.length;i+=1){ 
                                              iCode = sStr.charCodeAt(i);
                                              if(iCode == 12288){
                                                             iCode = 32;
                                              }else if(iCode > 65280 && iCode < 65375){
                                                             iCode -= 65248;                                                                                                    
                                              }
                                                             oRs.push(String.fromCharCode(iCode)); 
                                }                                                          
               }                                                            
               return oRs.join("");                                               
}
确认是否键盘有效输入值
function checkKey(iKey){
               if(iKey == 32 || iKey == 229){return true;}/*空格和异常*/
               if(iKey>47 && iKey < 58){return true;}/*数字*/
               if(iKey>64 && iKey < 91){return true;}/*字母*/
               if(iKey>95 && iKey < 108){return true;}/*数字键盘1*/
               if(iKey>108 && iKey < 112){return true;}/*数字键盘2*/
               if(iKey>185 && iKey < 193){return true;}/*符号1*/
               if(iKey>218 && iKey < 223){return true;}/*符号2*/
               return false;
}
获取网页被卷去的位置
function getScrollXY() {
               return document.body.scrollTop ? {
                               x: document.body.scrollLeft,
                               y: document.body.scrollTop
               }: {
                               x: document.documentElement.scrollLeft,
                               y: document.documentElement.scrollTop
               }
}
时间个性化输出功能
/*
1< 60s, 显示为刚刚
2>= 1min && < 60 min, 显示与当前时间差“XX分钟前
3>= 60min && < 1day, 显示与当前时间差今天 XX:XX”
4>= 1day && < 1year, 显示日期“XXXX XX:XX”
5>= 1year, 显示具体日期“XXXXXXXX XX:XX”
*/
function timeFormat(time){
               var date = new Date(time),
                               curDate = new Date(),
                               year = date.getFullYear(),
                               month = date.getMonth() + 10,
                               day = date.getDate(),
                               hour = date.getHours(),
                               minute = date.getMinutes(),
                               curYear = curDate.getFullYear(),
                               curHour = curDate.getHours(),
                               timeStr;
 
               if(year < curYear){
                               timeStr = year +''+ month +''+ day +' '+ hour +':'+ minute;
               }else{
                               var pastTime = curDate - date,
                                              pastH = pastTime/3600000;
 
                               if(pastH > curHour){
                                                timeStr = month +''+ day +' '+ hour +':'+ minute;
                               }else if(pastH >= 1){
                                                timeStr = '今天 ' + hour +':'+ minute +'';
                               }else{
                                                var pastM = curDate.getMinutes() - minute;
                                                if(pastM > 1){
                                                             timeStr = pastM +'分钟前';
                                                }else{
                                                             timeStr = '刚刚';
                                                }
                              }
               }
               return timeStr;
}
解决offsetX兼容性问题
// 针对火狐不支持offsetX/Y
function getOffset(e){
               var target = e.target, // 当前触发的目标对象
                                 eventCoord,
                                 pageCoord,
                                 offsetCoord;
 
               // 计算当前触发元素到文档的距离
               pageCoord = getPageCoord(target);
 
               // 计算光标到文档的距离
               eventCoord = {
                              X : window.pageXOffset + e.clientX,
                               Y : window.pageYOffset + e.clientY
               };
 
               // 相减获取光标到第一个定位的父元素的坐标
               offsetCoord = {
                               X : eventCoord.X - pageCoord.X,
                               Y : eventCoord.Y - pageCoord.Y
               };
               return offsetCoord;
}
 
function getPageCoord(element){
               var coord = { X : 0, Y : 0 };
               // 计算从当前触发元素到根节点为止,
               // 各级 offsetParent 元素的 offsetLeft  offsetTop 值之和
               while (element){
                               coord.X += element.offsetLeft;
                               coord.Y += element.offsetTop;
                               element = element.offsetParent;
               }
               return coord;
}
返回顶部的通用方法
function backTop(btnId) {
               var btn = document.getElementById(btnId);
               var d = document.documentElement;
               var b = document.body;
               window.onscroll = set;
               btn.style.display = "none";
               btn.onclick = function() {
                               btn.style.display = "none";
                               window.onscroll = null;
                               this.timer = setInterval(function() {
                                              d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
                                              b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
                                              if ((d.scrollTop + b.scrollTop) == 0) clearInterval(btn.timer, window.onscroll = set);
                                              }, 10);
               };
               function set() {
                               btn.style.display = (d.scrollTop + b.scrollTop > 100) ? 'block': "none"
               }
};
backTop('goTop');
获得URL中GET参数值
// 用法:如果地址是 test.htm?t1=1&t2=2&t3=3, 那么能取得:GET["t1"], GET["t2"], GET["t3"]
function get_get(){ 
               querystr = window.location.href.split("?")
               if(querystr[1]){
                               GETs = querystr[1].split("&");
                               GET = [];
                               for(i=0;i<GETs.length;i++){
                                                tmp_arr = GETs.split("=")
                                                key=tmp_arr[0]
                                                GET[key] = tmp_arr[1]
                               }
               }
               return querystr[1];
}
打开一个窗体通用方法
function openWindow(url,windowName,width,height){
               var x = parseInt(screen.width / 2.0) - (width / 2.0); 
               var y = parseInt(screen.height / 2.0) - (height / 2.0);
               var isMSIE= (navigator.appName == "Microsoft Internet Explorer");
               if (isMSIE) {
                               var p = "resizable=1,location=no,scrollbars=no,width=";
                               p = p+width;
                                  p = p+",height=";
                                  p = p+height;
                               p = p+",left=";
                               p = p+x;
                               p = p+",top=";
                               p = p+y;
                               retval = window.open(url, windowName, p);
               } else {
                               var win = window.open(url, "ZyiisPopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,modal=yes,width=" + width + ",height=" + height + ",resizable=no" );
                               eval("try { win.resizeTo(width, height); } catch(e) { }");
                               win.focus();
               }
}
提取页面代码中所有网址
var aa = document.documentElement.outerHTML.match(/(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/ig).join("\r\n").replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/igm,"");
alert(aa);
按字母排序,对每行进行数组排序
function SetSort(){
               var text=K1.value.split(/[\r\n]/).sort().join("\r\n");//顺序
               var test=K1.value.split(/[\r\n]/).sort().reverse().join("\r\n");//反序
               K1.value=K1.value!=text?text:test;
}
字符串反序
function IsReverse(text){
               return text.split('').reverse().join('');
}
清除html代码中的脚本
function clear_script(){
               K1.value=K1.value.replace(/<script.*?>[\s\S]*?<\/script>|\s+on[a-zA-Z]{3,16}\s?=\s?"[\s\S]*?"|\s+on[a-zA-Z]{3,16}\s?=\s?'[\s\S]*?'|\s+on[a-zA-Z]{3,16}\s?=[^ >]+/ig,"");
}
动态执行JavaScript脚本
 
function javascript(){
               try{
                 eval(K1.value);
               }catch(e){
                 alert(e.message);
               }
}
动态执行VBScript脚本
function vbscript(){
               try{
                               var script=document.getElementById("K1").value;
                               if(script.trim()=="")return;
                               window.execScript('On Error Resume Next \n'+script+'\n If Err.Number<>0 Then \n MsgBox "请输入正确的VBScript脚本!",48,"脚本错误!" \n End If',"vbscript")
               }catch(e){
                               alert(e.message);
               }
}
金额大写转换函数
function transform(tranvalue) {
               try {
                               var i = 1;
                               var dw2 = new Array("", "", "亿"); //大单位
                               var dw1 = new Array("", "", ""); //小单位
                               var dw = new Array("", "", "", "", "", "", "", "", "", ""); //整数部分用
                               //以下是小写转换成大写显示在合计大写的文本框中              
                               //分离整数与小数
                               var source = splits(tranvalue);
                               var num = source[0];
                               var dig = source[1];
                               //转换整数部分
                               var k1 = 0; //计小单位
                               var k2 = 0; //计大单位
                               var sum = 0;
                               var str = "";
                               var len = source[0].length; //整数的长度
                               for (i = 1; i <= len; i++) {
                                                var n = source[0].charAt(len - i); //取得某个位数上的数字
                                                var bn = 0;
                                                if (len - i - 1 >= 0) {
                                                             bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字
                                                }
                                                sum = sum + Number(n);
                                                if (sum != 0) {
                                                             str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面
                                                             if (n == '0') sum = 0;
                                                }
                                                if (len - i - 1 >= 0) { //在数字范围内
                                                             if (k1 != 3) { //加小单位
                                                                              if (bn != 0) {
                                                                                            str = dw1[k1].concat(str);
                                                                              }
                                                                              k1++;
                                                             } else { //不加小单位,加大单位
                                                                              k1 = 0;
                                                                              var temp = str.charAt(0);
                                                                              if (temp == "" || temp == "亿") //若大单位前没有数字则舍去大单位
                                                                              str = str.substr(1, str.length - 1);
                                                                              str = dw2[k2].concat(str);
                                                                              sum = 0;
                                                             }
                                                }
                                                if (k1 == 3){ //小单位到千则大单位进一
                                                             k2++;
                                                }
                               }
                               //转换小数部分
                               var strdig = "";
                               if (dig != "") {
                                                var n = dig.charAt(0);
                                                if (n != 0) {
                                                             strdig += dw[Number(n)] + ""; //加数字
                                                }
                                                var n = dig.charAt(1);
                                                if (n != 0) {
                                                             strdig += dw[Number(n)] + ""; //加数字
                                                }
                               }
                               str += "" + strdig;
               } catch(e) {
                               return "0";
               }
               return str;
}
//拆分整数与小数
function splits(tranvalue) {
               var value = new Array('', '');
               temp = tranvalue.split(".");
               for (var i = 0; i < temp.length; i++) {
                               value = temp;
               }
               return value;
}
resize的操作
(function(){
               var fn = function(){
                                              var w = document.documentElement ? document.documentElement.clientWidth : document.body.clientWidth
                                                                            ,r = 1255
                                                                            ,b = Element.extend(document.body)
                                                                            ,classname = b.className;
                                              if(w < r){
                                                                            //当窗体的宽度小于1255的时候执行相应的操作
                                              }else{
                                                                            //当窗体的宽度大于1255的时候执行相应的操作
                                              }
               }
               if(window.addEventListener){
                                              window.addEventListener('resize', function(){ fn(); });
               }else if(window.attachEvent){
                                              window.attachEvent('onresize', function(){ fn(); });
               }
               fn();
})();
实现base64解码
function base64_decode(data){
               var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
               var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,ac = 0,dec = "",tmp_arr = [];
               if (!data) { return data; }
               data += '';
               do { 
                                              h1 = b64.indexOf(data.charAt(i++));
                                              h2 = b64.indexOf(data.charAt(i++));
                                              h3 = b64.indexOf(data.charAt(i++));
                                              h4 = b64.indexOf(data.charAt(i++));
                                              bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
                                              o1 = bits >> 16 & 0xff;
                                              o2 = bits >> 8 & 0xff;
                                              o3 = bits & 0xff;
                                              if (h3 == 64) {
                                                                            tmp_arr[ac++] = String.fromCharCode(o1);
                                              } else if (h4 == 64) {
                                                                            tmp_arr[ac++] = String.fromCharCode(o1, o2);
                                              } else {
                                                                            tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
                                              }
               } while (i < data.length);
               dec = tmp_arr.join('');
               dec = utf8_decode(dec);
               return dec;
}
实现utf8解码
function utf8_decode(str_data){
               var tmp_arr = [],i = 0,ac = 0,c1 = 0,c2 = 0,c3 = 0;str_data += '';
               while (i < str_data.length) {
                                              c1 = str_data.charCodeAt(i);
                                              if (c1 < 128) {
                                                                            tmp_arr[ac++] = String.fromCharCode(c1);
                                                                            i++;
                                              } else if (c1 > 191 && c1 < 224) {             
                                                                            c2 = str_data.charCodeAt(i + 1);
                                                                            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
                                                                            i += 2;
                                              } else {
                                                                            c2 = str_data.charCodeAt(i + 1);
                                                                            c3 = str_data.charCodeAt(i + 2);
                                                                            tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                                                                            i += 3;
                                              }
               } 
               return tmp_arr.join('');
}
获取窗体可见范围的宽与高
function getViewSize(){
               var de=document.documentElement;
               var db=document.body;
               var viewW=de.clientWidth==0 ?  db.clientWidth : de.clientWidth;
               var viewH=de.clientHeight==0 ?  db.clientHeight : de.clientHeight;
               return Array(viewW ,viewH);
}
判断鼠标是否移出事件
function isMouseOut(e, handler) {
               if (e.type !== 'mouseout') {
                                              return false;
               }
               var reltg = e.relatedTarget ? e.relatedTarget : e.type === 'mouseout' ? e.toElement : e.fromElement;
               while (reltg && reltg !== handler) {
                                              reltg = reltg.parentNode;
               }
               return (reltg !== handler);
}
半角转换为全角函数
function ToDBC(str){
               var result = '';
               for(var i=0; i < str.length; i++){
                               code = str.charCodeAt(i);
                               if(code >= 33 && code <= 126){
                                                result += String.fromCharCode(str.charCodeAt(i) + 65248);
                               }else if (code == 32){
                                                result += String.fromCharCode(str.charCodeAt(i) + 12288 - 32);
                               }else{
                                                result += str.charAt(i);
                               }
               }
               return result;
}
全角转换为半角函数
function ToCDB(str){
               var result = '';
               for(var i=0; i < str.length; i++){
                               code = str.charCodeAt(i);
                               if(code >= 65281 && code <= 65374){
                                                result += String.fromCharCode(str.charCodeAt(i) - 65248);
                               }else if (code == 12288){
                                                result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);
                               }else{
                                                result += str.charAt(i);
                               }
               }
               return result;
}
记录按键

var keystring = "";//记录按键的字符串

function keypress(e)

{

               var currKey=0,CapsLock=0,e=e||event;

               currKey=e.keyCode||e.which||e.charCode;

               CapsLock=currKey>=65&&currKey<=90;

               keystring = String.fromCharCode(currKey);

}

function keydown(e)

{

               var e=e||event;

               var currKey=e.keyCode||e.which||e.charCode;

               switch(currKey)

               {

                               case 8: keyName = "Backspace"; break;

                               case 9: keyName = "Tab"; break;

                               case 13:keyName = "Enter"; break;

                               case 16:keyName = "LShift";break;

                               case 17:keyName = "LCtrl";break;

                               case 18:keyName = "LAlt";break;

                               case 19:keyName = "Pause";break;

                               case 20:keyName = "CapsLock";break;

                               case 27:keyName = "Escape";break;

                               case 32:keyName = "Space"; break;

                               case 33:keyName = "PageUp"; break;

                               case 34:keyName = "PageDown"; break;

                               case 35:keyName = "End"; break;

                               case 36:keyName = "Home"; break;

                               case 37:keyName = "←"; break;

                               case 38:keyName = "↑"; break;

                               case 39:keyName = "→"; break;

                               case 40:keyName = "↓"; break;

                               case 42:keyName = "Print";break;

                               case 45:keyName = "Insert";break;

                               case 46:keyName = "Delete"; break;

                               case 96:keyName = "KP_0";break;

                               case 97:keyName = "KP_1";break;

                               case 98:keyName = "KP_2";break;

                               case 99:keyName = "KP_3";break;

                               case 100:keyName = "KP_4";break;

                               case 101:keyName = "KP_5";break;

                               case 102:keyName = "KP_6";break;

                               case 103:keyName = "KP_7";break;

                               case 104:keyName = "KP_8";break;

                               case 105:keyName = "KP_9";break;

                               case 106:keyName = "KP_*";break;

                               case 107:keyName = "KP_+";break;

                               case 108:keyName = "KP_/";break;

                               case 109:keyName = "KP_-";break;

                               case 110:keyName = "KP_.";break;

                               case 111:keyName = "KP_=";break;

                               case 112:keyName = "F1";break;

                               case 113:keyName = "F2";break;

                               case 114:keyName = "F3";break;

                               case 115:keyName = "F4";break;

                               case 116:keyName = "F5";break;

                               case 117:keyName = "F6";break;

                               case 118:keyName = "F7";break;

                               case 119:keyName = "F8";break;

                               case 120:keyName = "F9";break;

                               case 121:keyName = "F10";break;

                               case 122:keyName = "F11";break;

                               case 123:keyName = "F12";break;

                               case 136:keyName = "NumLock";break;

                               case 137:keyName = "ScrollLock";break;

                               default:keyName = String.fromCharCode(currKey); break;

               }

               keystring = keyName;

}

function keyup(e)

{

               alert(keystring);

}

document.οnkeypress=keypress;

document.onkeydown =keydown;

document.onkeyup =keyup;

回车变为Tab功能

$(function()

               {

                               //界面初始化

                               $("#fylb").focus();//设置新开页面时的焦点

                               //$("#fylb").select();//选中文字

                               $("#inputArea").find("input,select").not("input[readOnly]").keyup(function(e)

                               {

                                              if (e.keyCode == 13)//判断所按是否回车

                                              {

                                                             var inputs = $("#inputArea").find("input,select").not("input[readOnly]");//获取表单中的所有输入框

                                                             var idx = inputs.index(this);//获取当前焦点输入框所处的位置

                                                             if (idx == inputs.length - 1)//判断是否是最后一个输入框

                                                             {

                                                                            //inputs[0].focus();//设置焦点

                                                                            //inputs[0].select();//选中文字

                                                                            //alert("到最后一个输入框了");

                                                                            if(addNewYp("20120101","西药","阿司匹林","20片/盒","复方","盒","3","12.01","36.03")){

                                                                                            $("#fylb").focus();

                                                                            };

                                                             }

                                                             else

                                                             {

                                                                            inputs[idx + 1].focus();//下一个元素设置焦点

                                                                            var index1 = $("#inputArea").find("input").index(this);

                                                                            if(index1 > -1){//是input

                                                                                            inputs[idx + 1].select();       //选中文

                                                                            }

                                                             }

                                              }

                               });

               }

)

禁用页面Backspace返回功能(除了input text 和 textarea)

//IE

document.onkeydown = function(e){

               e = e||event;

               var keycode = e.keyCode||e.which||e.charCode;

               if(keycode==8){

                               // 如果是在textarea内不执行任何操作

                               if(event.srcElement.tagName.toLowerCase() == "input" || event.srcElement.tagName.toLowerCase() == "textarea"){

                                              if(event.srcElement.readOnly==true || event.srcElement.disabled==true){

                                                             return false;

                                              }

                                              return true;

                               }

                               return false;

               }

               return true;

}

Mobile手机开发相关
判断是否移动设备

function isMobile(){

               if (typeof this._isMobile === 'boolean'){

                               return this._isMobile;

               }

               var screenWidth = this.getScreenWidth();

               var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport ||rendererModel.runningExperiments.fixviewport;

               var fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() === "new");

               if(!fixViewPortsExperiment){

                               if(!this.isAppleMobileDevice()){

                                              screenWidth = screenWidth/window.devicePixelRatio;

                               }

               }

               var isMobileScreenSize = screenWidth < 600;

               var isMobileUserAgent = false;

               this._isMobile = isMobileScreenSize && this.isTouchScreen();

               return this._isMobile;

}

判断是否移动设备访问

function isMobileUserAgent(){

               return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));

}

判断是否苹果移动设备访问

function isAppleMobileDevice(){

               return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()));

}

判断是否安卓移动设备访问

function isAndroidMobileDevice(){

               return (/android/i.test(navigator.userAgent.toLowerCase()));

}

判断是否Touch屏幕

function isTouchScreen(){

               return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);

}

判断是否打开视窗

function isViewportOpen() {

               return !!document.getElementById('wixMobileViewport');

}

获取移动设备初始化大小

function getInitZoom(){

               if(!this._initZoom){

                               var screenWidth = Math.min(screen.height, screen.width);

                               if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){

                                              screenWidth = screenWidth/window.devicePixelRatio;

                               }

                                              this._initZoom = screenWidth /document.body.offsetWidth;

                               }

               return this._initZoom;

}

获取移动设备最大化大小

function getZoom(){

               var screenWidth = (Math.abs(window.orientation) === 90) ? Math.max(screen.height, screen.width) : Math.min(screen.height, screen.width);

               if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){

                               screenWidth = screenWidth/window.devicePixelRatio;

               }

               var FixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;

               var FixViewPortsExperimentRunning = FixViewPortsExperiment && (FixViewPortsExperiment === "New" || FixViewPortsExperiment === "new");

               if(FixViewPortsExperimentRunning){

                               return screenWidth / window.innerWidth;

               }else{

                               return screenWidth / document.body.offsetWidth;

               }

}

获取移动设备屏幕宽度

function getScreenWidth(){

               var smallerSide = Math.min(screen.width, screen.height);

               var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;

               var fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() === "new");

               if(fixViewPortsExperiment){

                               if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){

                                              smallerSide = smallerSide/window.devicePixelRatio;

                               }

               }

               return smallerSide;

}

 

WdatePicker
引用

<script type="text/javascript" language="javascript" src="<%=basePath%>js/My97DatePicker/WdatePicker.js"></script>

起止日期

//起始日期

<input type="text" id="startDate" name="startDate" style="width:100px;" value="<s:date name='startDate' format='yyyy-MM-dd'/>" οnfοcus="WdatePicker({dateFmt:'yyyy-MM-dd',isShowOK:false,isShowClear:false,isShowToday:true,qsEnabled:false,readOnly:true,maxDate:'#F{\'%y-%M-%d\'}'});" class="Calendar"/>

<!--, minDate:'#F{$dp.$D(\'endDate\',{M:-1})}'-->

 

//截止日期

<input type="text" id="endDate" name="endDate" style="width:100px;" value="<s:date name='endDate' format='yyyy-MM-dd'/>" οnfοcus="WdatePicker({dateFmt:'yyyy-MM-dd',isShowOK:false,isShowClear:false,isShowToday:true,qsEnabled:false,readOnly:true,maxDate:'#F{\'%y-%M-%d\'&&$dp.$D(\'startDate\',{M:1})}',minDate:'#F{$dp.$D(\'startDate\')}'});" class="Calendar"/>

常用的正则表达式
//正整数
/^[0-9]*[1-9][0-9]*$/;
//负整数
/^-[0-9]*[1-9][0-9]*$/;
//正浮点数
/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;   
//负浮点数
/^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;  
//浮点数
/^(-?\d+)(\.\d+)?$/;
//email地址
/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
//url地址
/^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/;
或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$ 
////日(年--日、年..日)
/^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/;
//匹配中文字符
/[\u4e00-\u9fa5]/;
//匹配帐号是否合法(字母开头,允许5-10字节,允许字母数字下划线)
/^[a-zA-Z][a-zA-Z0-9_]{4,9}$/;
//匹配空白行的正则表达式
/\n\s*\r/;
//匹配中国邮政编码
/[1-9]\d{5}(?!\d)/;
//匹配身份证
/\d{15}|\d{18}/;
//匹配国内电话号码
/(\d{3}-|\d{4}-)?(\d{8}|\d{7})?/;
//匹配IP地址
/((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/;
//匹配首尾空白字符的正则表达式
/^\s*|\s*$/;
//匹配HTML标记的正则表达式
< (\S*?)[^>]*>.*?|< .*? />;
//sql 语句
^(select|drop|delete|create|update|insert).*$
//提取信息中的网络链接
(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? 
//提取信息中的邮件地址
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
//提取信息中的图片链接
(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? 
//提取信息中的 IP 地址
(\d+)\.(\d+)\.(\d+)\.(\d+)
//取信息中的中国手机号码
(86)*0*13\d{9} 
//提取信息中的中国邮政编码
[1-9]{1}(\d+){5} 
//提取信息中的浮点数(即小数)
(-?\d*)\.?\d+ 
//提取信息中的任何数字
(-?\d*)(\.\d+)?
//电话区号
^0\d{2,3}$
//腾讯 QQ 
^[1-9]*[1-9][0-9]*$ 
//帐号(字母开头,允许 5-16 字节,允许字母数字下划线)
^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
//中文、英文、数字及下划线
^[\u4e00-\u9fa5_a-zA-Z0-9]+$
jQuery.validate

jquery.validate是一个基于jquery的非常优秀的验证框架,我们可以通过它迅速验证一些常见的输入,并且可以自己扩充自己的验证方法,而且对国际化也有非常好的支持。

 

jquery.validate 官方网址:http://bassistance.de/jquery-plugins/jquery-plugin-validation/

 

使用用法

1、首先下载jquery.js和jquery.validate.js并引入js文件(注意:jquery必须在jquery.validate.js之前被引入,否则会报错)

 

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript" src="jquery.validate.js"></script>

 

2、编写需要验证的表单代码及编写验证代码(编写验证代码有两种方式,首先使用普通方式)

 

var validator = $("formId").validate({// #formId为需要进行验证的表单ID

errorElement :"div",// 使用"div"标签标记错误, 默认:"label"

   wrapper:"li",// 使用"li"标签再把上边的errorELement包起来

   errorClass :"validate-error",// 错误提示的css类名"error"

onsubmit:true,// 是否在提交是验证,默认:true

onfocusout:true,// 是否在获取焦点时验证,默认:true

   onkeyup :true,// 是否在敲击键盘时验证,默认:true

onclick:false,// 是否在鼠标点击时验证(一般验证checkbox,radiobox)

focusCleanup:false,// 当未通过验证的元素获得焦点时,并移除错误提示

       rules: {

loginName: {// 需要进行验证的输入框name

                        required: true// 验证条件:必填

},

loginPassword: {// 需要进行验证的输入框name

                        required: true,// 验证条件:必填

                        minlength: 5// 验证条件:最小长度为5

},

email: {// 需要进行验证的输入框name

                        required: true,// 验证条件:必填

                        email: true// 验证条件:格式为email

}

},

messages: {

loginName: {

                        required: "用户名不允许为空!"// 验证未通过的消息

},

loginPassword: {

                        required: "密码不允许为空!",

                        minlength: jQuery.format("密码至少输入 {0} 字符!")

},

email: {

                        required: "email不允许为空",

                        email: "邮件地址格式错误!"

}

                }

 

2、使用meta String方式进行验证,即验证内容与写入class中(注意meta String方式需要引入jquery.metadata.js文件)

 

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript" src="jquery.metadata.js"></script>

<script type="text/javascript" src="jquery.validate.js"></script>

 

<form id="validate" action="admin/transfer!save.action" method="post">

<input type="text" class="required" name="entity.name" />

<input type="text" class="email" name="entity.email" />

<input type="submit" class="button" value="提 交" />

</form>

<script type="text/javascript">

$(document).ready(

function() {

$("#formId").validate({// #formId为需要进行验证的表单ID

   meta :"validate"// 采用meta String方式进行验证(验证内容与写入class中)

errorElement :"div",// 使用"div"标签标记错误, 默认:"label"

wrapper:"li",// 使用"li"标签再把上边的errorELement包起来

   errorClass :"validate-error",// 错误提示的css类名"error"

onsubmit:true,// 是否在提交是验证,默认:true

onfocusout:true,// 是否在获取焦点时验证,默认:true

   onkeyup :true,// 是否在敲击键盘时验证,默认:true

onclick:false,// 是否在鼠标点击时验证(一般验证checkbox,radiobox)

   focusCleanup:false,// 当未通过验证的元素获得焦点时,并移除错误提示

});

})

</script>

 

注意:在Struts2应用中经常用遇到name="entity.name"形式的input表单(即name中包含逗号或其它特殊符号时),我们可以将上述名称以引号("")括起即可,如:

 

   rules: {

"entity.loginName": {// 需要进行验证的输入框name

                        required: true// 验证条件:必填

}

},

messages: {

"entity.loginName": {

                        required: "用户名不允许为空!"// 验证未通过的消息

}

}

 

可给我email:happyczx@126.com 欢迎一起探讨有关java技术的问题

以上部分代码来源于payj开源支付系统,这个java开源项目里面有很多优秀的Struts2 spring hibernate jquery 等框架的应用源码,值得一看。在这里先推荐一下,呵呵。。。。

 

附:

 

内置验证方式

required() 返回:Boolean 必填验证元素

required(dependency-expression) 返回:Boolean 必填元素依赖于表达式的结果

required(dependency-callback) 返回:Boolean 必填元素依赖于回调函数的结果

remote(url) 返回:Boolean 请求远程校验。url通常是一个远程调用方法

minlength(length) 返回:Boolean 设置最小长度

maxlength(length) 返回:Boolean 设置最大长度

rangelength(range) 返回:Boolean 设置一个长度范围[min,max]

min(value) 返回:Boolean 设置最大值

max(value) 返回:Boolean 设置最小值

email() 返回:Boolean 验证电子邮箱格式

range(range) 返回:Boolean 设置值的范围

url() 返回:Boolean 验证URL格式

date() 返回:Boolean 验证日期格式(类似30/30/2008的格式,不验证日期准确性只验证格式)

dateISO() 返回:Boolean 验证ISO类型的日期格式

dateDE() 返回:Boolean 验证德式的日期格式(29.04.1994 or 1.1.2006)

number() 返回:Boolean 验证十进制数字(包括小数的)

digits() 返回:Boolean 验证整数

creditcard() 返回:Boolean 验证信用卡号

accept(extension) 返回:Boolean 验证相同后缀名的字符串

equalTo(other) 返回:Boolean 验证两个输入框的内容是否相同

phoneUS() 返回:Boolean 验证美式的电话号码

 

 

validate()的可选项

debug:

进行调试模式(表单不提交)

$(".selector").validate

({

   debug:true

})

把调试设置为默认:

$.validator.setDefaults({

   debug:true

})

submitHandler:

通过验证后运行的函数,里面要加上表单提交的函数,否则表单不会提交

$(".selector").validate({

submitHandler:function(form) {

$(form).ajaxSubmit();

   }

})

ignore:

对某些元素不进行验证

$("#myform").validate({

ignore:".ignore"

})

rules:

自定义规则,key:value的形式,key是要验证的元素,value可以是字符串或对象

$(".selector").validate({

   rules:{

name:"required",

     email:{

required:true,

email:true

     }

   }

})

messages:

自定义的提示信息key:value的形式key是要验证的元素,值是字符串或函数

$(".selector").validate({

   rules:{

name:"required",

     email:{

required:true,

email:true

     }

   },

   messages:{

name:"Name不能为空",

     email:{

required:"E-mail不能为空",

email:"E-mail地址不正确"

     }

   }

})

groups:

对一组元素的验证,用一个错误提示,用error Placement控制把出错信息放在哪里

$("#myform").validate({

groups:{

username:"fname lname"

},

errorPlacement:function(error,element) {

     if (element.attr("name") == "fname" || element.attr("name") == "lname")

error.insertAfter("#lastname");

     else

error.insertAfter(element);

   },

   debug:true

})

onsubmit Boolean 默认:true

是否提交时验证

$(".selector").validate({

onsubmit:false

})

onfocusout Boolean 默认:true

是否在获取焦点时验证

$(".selector").validate({

onfocusout:false

})

onkeyup Boolean 默认:true
是否在敲击键盘时验证

$(".selector").validate({

   onkeyup:false

})

onclick Boolean 默认:true

是否在鼠标点击时验证(一般验证checkbox,radiobox)

$(".selector").validate({

onclick:false

})

focusInvalid Boolean 默认:true

提交表单后,未通过验证的表单(第一个或提交之前获得焦点的未通过验证的表单)会获得焦点

$(".selector").validate({

focusInvalid:false

})

focusCleanup Boolean 默认:false

当未通过验证的元素获得焦点时,并移除错误提示(避免和 focusInvalid.一起使用)

$(".selector").validate({

focusCleanup:true

})

errorClass String 默认:"error"

指定错误提示的css类名,可以自定义错误提示的样式

$(".selector").validate({

errorClass:"invalid"

})

errorElement String 默认:"label"

使用什么标签标记错误

$(".selector").validate

errorElement:"em"

})

wrapper String

使用什么标签再把上边的errorELement包起来

$(".selector").validate({

wrapper:"li"

})

errorLabelContainer Selector

把错误信息统一放在一个容器里面

$("#myform").validate({

errorLabelContainer:"#messageBox",

   wrapper:"li",

submitHandler:function() { alert("Submitted!") }

})

 

showErrors:

跟一个函数,可以显示总共有多少个未通过验证的元素

$(".selector").validate({

showErrors:function(errorMap,errorList) {

$("#summary").html("Your form contains " + this.numberOfInvalids() + " errors,see details below.");

this.defaultShowErrors();

   }

})

errorPlacement:

跟一个函数,可以自定义错误放到哪里

$("#myform").validate({

               errorPlacement:function(error,element) {

                               error.appendTo(element.parent("td").next("td"));

               },

               debug:true

})

success:

要验证的元素通过验证后的动作,如果跟一个字符串,会当做一个css类,也可跟一个函数

$("#myform").validate({

success:"valid",

submitHandler:function() { alert("Submitted!") }

})

highlight:

可以给未通过验证的元素加效果,闪烁等

 

addMethod(name,method,message)方法:

参数name是添加的方法的名字

参数method是一个函数,接收三个参数(value,element,param)

value是元素的值,

element是元素本身

param是参数,

我们可以用addMethod来添加除built-in Validation methods之外的验证方法 比如有一个字段,只能输一个字母,范围是a-f,写法如下:

$.validator.addMethod("af",function(value,element,params){

if(value.length>1){

    return false;

   }

if(value>=params[0] && value<=params[1]){

    return true;

   }else{

    return false;

   }

},"必须是一个字母,且a-f");

用的时候,比如有个表单字段的id="username",则在rules中写

username:{

af:["a","f"]

}

addMethod的第一个参数,就是添加的验证方法的名子,这时是af

addMethod的第三个参数,就是自定义的错误提示,这里的提示为:"必须是一个字母,且a-f"

addMethod的第二个参数,是一个函数,这个比较重要,决定了用这个验证方法时的写法

如果只有一个参数,直接写,如果af:"a",那么a就是这个唯一的参数,如果多个参数,用在[]里,用逗号分开

================================

jquery.validate全攻略
一、准备工作

需要JQuery版本:1.2.6+, 兼容 1.3.2

<script src="jquery.js" type="text/javascript"></script>

<script src="jquery.validate.js" type="text/javascript"></script>

 

二、默认校验规则

(1)required:true               必输字段

(2)remote:"check.php"          使用ajax方法调用check.php验证输入值

(3)email:true                  必须输入正确格式的电子邮件

(4)url:true                    必须输入正确格式的网址

(5)date:true                   必须输入正确格式的日期

(6)dateISO:true                必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性

(7)number:true                 必须输入合法的数字(负数,小数)

(8)digits:true                 必须输入整数

(9)creditcard:                 必须输入合法的信用卡号

(10)equalTo:"#field"           输入值必须和#field相同

(11)accept:                    输入拥有合法后缀名的字符串(上传文件的后缀)

(12)maxlength:5                输入长度最多是5的字符串(汉字算一个字符)

(13)minlength:10               输入长度最小是10的字符串(汉字算一个字符)

(14)rangelength:[5,10]         输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符)

(15)range:[5,10]               输入值必须介于 5 和 10 之间

(16)max:5                      输入值不能大于5

(17)min:10                     输入值不能小于10

 

三、默认的提示

messages: {

required: "This field is required.",

remote: "Please fix this field.",

email: "Please enter a valid email address.",

url: "Please enter a valid URL.",

date: "Please enter a valid date.",

dateISO: "Please enter a valid date (ISO).",

dateDE: "Bitte geben Sie ein g眉ltiges Datum ein.",

number: "Please enter a valid number.",

numberDE: "Bitte geben Sie eine Nummer ein.",

digits: "Please enter only digits",

creditcard: "Please enter a valid credit card number.",

equalTo: "Please enter the same value again.",

accept: "Please enter a value with a valid extension.",

maxlength: $.validator.format("Please enter no more than {0} characters."),

minlength: $.validator.format("Please enter at least {0} characters."),

rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),

range: $.validator.format("Please enter a value between {0} and {1}."),

max: $.validator.format("Please enter a value less than or equal to {0}."),

min: $.validator.format("Please enter a value greater than or equal to {0}.")

}

如需要修改,可在js代码中加入:

jQuery.extend(jQuery.validator.messages, {

required: "必选字段",

remote: "请修正该字段",

email: "请输入正确格式的电子邮件",

url: "请输入合法的网址",

date: "请输入合法的日期",

dateISO: "请输入合法的日期 (ISO).",

number: "请输入合法的数字",

digits: "只能输入整数",

creditcard: "请输入合法的信用卡号",

equalTo: "请再次输入相同的值",

accept: "请输入拥有合法后缀名的字符串",

maxlength: jQuery.validator.format("请输入一个长度最多是 {0} 的字符串"),

minlength: jQuery.validator.format("请输入一个长度最少是 {0} 的字符串"),

rangelength: jQuery.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),

range: jQuery.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),

max: jQuery.validator.format("请输入一个最大为 {0} 的值"),

min: jQuery.validator.format("请输入一个最小为 {0} 的值")

});

推荐做法,将此文件放入messages_cn.js中,在页面中引入

<script src="../js/messages_cn.js" type="text/javascript"></script>

 

四、使用方式

1.将校验规则写到控件中

<script src="../js/jquery.js" type="text/javascript"></script>

<script src="../js/jquery.validate.js" type="text/javascript"></script>

<script src="./js/jquery.metadata.js" type="text/javascript"></script>

<script>

$().ready(function() {

               $("#signupForm").validate();

});

</script>

 

<form id="signupForm" method="get" action="">

<p>

               <label for="firstname">Firstname</label>

               <input id="firstname" name="firstname" class="required" />

</p>

<p>

               <label for="email">E-Mail</label>

               <input id="email" name="email" class="required email" />

</p>

<p>

               <label for="password">Password</label>

               <input id="password" name="password" type="password" class="{required:true,minlength:5}" />

</p>

<p>

               <label for="confirm_password">确认密码</label>

               <input id="confirm_password" name="confirm_password" type="password" class="{required:true,minlength:5,equalTo:'#password'}" />

</p>

<p>

               <input class="submit" type="submit" value="Submit"/>

</p>

</form>

使用class="{}"的方式,必须引入包:jquery.metadata.js

可以使用如下的方法,修改提示内容:

class="{required:true,minlength:5,messages:{required:'请输入内容'}}"

在使用equalTo关键字时,后面的内容必须加上引号,如下代码:

class="{required:true,minlength:5,equalTo:'#password'}"

另外一个方式,使用关键字:meta(为了元数据使用其他插件你要包装你的验证规则 在他们自己的项目中可以用这个特殊的选项)

Tell the validation plugin to look inside a validate-property in metadata for validation rules.

例如:

meta: "validate"

<input id="password" name="password" type="password" class="{validate:{required:true,minlength:5}}" />

 

再有一种方式:

$.metadata.setType("attr", "validate");

这样可以使用validate="{required:true}"的方式,或者class="required",但class="{required:true,minlength:5}"将不起作用

 

2.将校验规则写到代码中

 

$().ready(function () {

               $("#signupForm").validate({

                              rules : {

                                              firstname : "required",

                                              email : {

                                                             required : true,

                                                             email : true

                                              },

                                              password : {

                                                             required : true,

                                                             minlength : 5

                                              },

                                              confirm_password : {

                                                             required : true,

                                                             minlength : 5,

                                                             equalTo : "#password"

                                              }

                               },

                               messages : {

                                              firstname : "请输入姓名",

                                              email : {

                                                             required : "请输入Email地址",

                                                             email : "请输入正确的email地址"

                                              },

                                              password : {

                                                             required : "请输入密码",

                                                             minlength : jQuery.format("密码不能小于{0}个字符")

                                              },

                                              confirm_password : {

                                                             required : "请输入确认密码",

                                                             minlength : "确认密码不能小于5个字符",

                                                             equalTo : "两次输入密码不一致不一致"

                                              }

                               }

               });

});

//messages处,如果某个控件没有message,将调用默认的信息

 

<form id="signupForm" method="get" action="">

<p>

<label for="firstname">Firstname</label>

<input id="firstname" name="firstname" /></p>

<p>

<label for="email">E-Mail</label>

<input id="email" name="email" /></p>

<p>

<label for="password">Password</label>

<input id="password" name="password" type="password" /></p>

<p>

<label for="confirm_password">确认密码</label>

<input id="confirm_password" name="confirm_password" type="password" /></p>

<p>

<input class="submit" type="submit" value="Submit" />

</p>

</form>

 

required:true 必须有值

required:"#aa:checked"表达式的值为真,则需要验证

required:function(){}返回为真,表时需要验证

后边两种常用于,表单中需要同时填或不填的元素

 

五、常用方法及注意问题

1.用其他方式替代默认的SUBMIT

$().ready(function () {

               $("#signupForm").validate({

                               submitHandler : function (form) {

                                              alert("submitted");

                                              form.submit();

                               }

               });

});

可以设置validate的默认值,写法如下:

$.validator.setDefaults({

               submitHandler : function (form) {

                               alert("submitted!");

                               form.submit();

               }

});

如果想提交表单, 需要使用form.submit()而不要使用$(form).submit()

2.debug

如果这个参数为true,那么表单不会提交,只进行检查,调试时十分方便

$().ready(function () {

               $("#signupForm").validate({

                               debug : true

               });

});

如果一个页面中有多个表单,用

$.validator.setDefaults({

               debug : true

})

3.ignore:忽略某些元素不验证

ignore: ".ignore"

4.errorPlacement:Callback  Default: 把错误信息放在验证的元素后面 

指明错误放置的位置,默认情况是:error.appendTo(element.parent());即把错误信息放在验证的元素后面

errorPlacement: function(error, element) {  

               error.appendTo(element.parent());  

}

//示例:

<tr>

  <td class="label">

    <label id="lfirstname" for="firstname">First Name</label>

  </td>

  <td class="field">

    <input id="firstname" name="firstname" type="text" value="" maxlength="100" />

  </td>

  <td class="status"></td>

</tr>

<tr>

  <td style="padding-right: 5px;">

  <input id="dateformat_eu" name="dateformat" type="radio" value="0" />

  <label id="ldateformat_eu" for="dateformat_eu">14/02/07</label></td>

  <td style="padding-left: 5px;">

  <input id="dateformat_am" name="dateformat" type="radio" value="1" />

  <label id="ldateformat_am" for="dateformat_am">02/14/07</label></td>

<td></td>

</tr>

<tr>

  <td class="label"></td>

  <td class="field" colspan="2">

    <div id="termswrap">

    <input id="terms" type="checkbox" name="terms" />

    <label id="lterms" for="terms">I have read and accept the Terms of Use.</label></div>

  </td>

</tr>

 

errorPlacement : function (error, element) {

               if (element.is(":radio"))

                              error.appendTo(element.parent().next().next());

               else if (element.is(":checkbox"))

                               error.appendTo(element.next());

               else

                               error.appendTo(element.parent().next());

}

代码的作用是:一般情况下把错误信息显示在<td class="status"></td>中,如果是radio显示在<td></td>中,如果是checkbox显示在内容的后面

errorClass:String  Default: "error" 

指定错误提示的css类名,可以自定义错误提示的样式

errorElement:String  Default: "label" 

用什么标签标记错误,默认的是label你可以改成em

errorContainer:Selector 

显示或者隐藏验证信息,可以自动实现有错误信息出现时把容器属性变为显示,无错误时隐藏,用处不大

errorContainer: "#messageBox1, #messageBox2"

errorLabelContainer:Selector

把错误信息统一放在一个容器里面。

wrapper:String

用什么标签再把上边的errorELement包起来

一般这三个属性同时使用,实现在一个容器内显示所有错误提示的功能,并且没有信息时自动隐藏

errorContainer: "div.error",

errorLabelContainer: $("#signupForm div.error"),

wrapper: "li"

 

设置错误提示的样式,可以增加图标显示

input.error { border: 1px solid red; }

label.error {

background:url("./demo/images/unchecked.gif") no-repeat 0px 0px;

padding-left: 16px;

padding-bottom: 2px;

font-weight: bold;

  color: #EA5200;

}

label.checked {

background:url("./demo/images/checked.gif") no-repeat 0px 0px;

}

success:String,Callback

要验证的元素通过验证后的动作,如果跟一个字符串,会当做一个css类,也可跟一个函数

success: function(label) {

               // set &nbsp; as text for IE

               label.html("&nbsp;").addClass("checked");

               //label.addClass("valid").text("Ok!")

}

添加"valid" 到验证元素, 在CSS中定义的样式<style>label.valid {}</style>

success: "valid"

 

onsubmit: Boolean  Default: true 

提交时验证. 设置唯false就用其他方法去验证

onfocusout:Boolean  Default: true 

失去焦点是验证(不包括checkboxes/radio buttons)

onkeyup:Boolean  Default: true 

在keyup时验证.

onclick:Boolean  Default: true 

在checkboxes 和 radio 点击时验证

focusInvalid:Boolean  Default: true 

提交表单后,未通过验证的表单(第一个或提交之前获得焦点的未通过验证的表单)会获得焦点

focusCleanup:Boolean  Default: false 

如果是true那么当未通过验证的元素获得焦点时,移除错误提示。避免和 focusInvalid 一起用

 

// 重置表单

$().ready(function () {

               var validator = $("#signupForm").validate({

                                              submitHandler : function (form) {

                                                             alert("submitted");

                                                             form.submit();

                                              }

                               });

               $("#reset").click(function () {

                               validator.resetForm();

               });

});

 

remote:URL

使用ajax方式进行验证,默认会提交当前验证的值到远程地址,如果需要提交其他的值,可以使用data选项

remote : "check-email.php"

remote : {

               url : "check-email.php", //后台处理程序

               type : "post", //数据发送方式

               dataType : "json", //接受数据格式

               data : { //要传递的数据

                               username : function () {

                                              return $("#username").val();

                               }

               }

}

远程地址只能输出 "true" 或 "false",不能有其它输出

 

 

addMethod:name, method, message

自定义验证方法

 

// 中文字两个字节

jQuery.validator.addMethod("byteRangeLength", function (value, element, param) {

               var length = value.length;

               for (var i = 0; i < value.length; i++) {

                               if (value.charCodeAt(i) > 127) {

                                              length++;

                               }

               }

               return this.optional(element) || (length >= param[0] && length <= param[1]);

}, $.validator.format("请确保输入的值在{0}-{1}个字节之间(一个中文字算2个字节)"));

 

// 邮政编码验证   

jQuery.validator.addMethod("isZipCode", function (value, element) {

               var tel = /^[0-9]{6}$/;

               return this.optional(element) || (tel.test(value));

}, "请正确填写您的邮政编码");

 

radio和checkbox、select的验证

radio的required表示必须选中一个

<inputtype="radio" id="gender_male" value="m" name="gender" class="{required:true}" />

<inputtype="radio" id="gender_female" value="f" name="gender"/>

checkbox的required表示必须选中

<input type="checkbox" class="checkbox" id="agree" name="agree" class="{required:true}" />

checkbox的minlength表示必须选中的最小个数,maxlength表示最大的选中个数,rangelength:[2,3]表示选中个数区间

<input type="checkbox" class="checkbox" id="spam_email" value="email" name="spam[]" class="{required:true, minlength:2}" />

<input type="checkbox" class="checkbox" id="spam_phone" value="phone" name="spam[]" />

<input type="checkbox" class="checkbox" id="spam_mail" value="mail" name="spam[]" />

 

select的required表示选中的value不能为空

<select id="jungle" name="jungle" title="Please select something!" class="{required:true}">

<option value=""></option>

<option value="1">Buga</option>

<option value="2">Baga</option>

<option value="3">Oi</option>

</select>

select的minlength表示选中的最小个数(可多选的select),maxlength表示最大的选中个数,rangelength:[2,3]表示选中个数区间

<select id="fruit" name="fruit" title="Please select at least two fruits" class="{required:true, minlength:2}" multiple="multiple">

<option value="b">Banana</option>

<option value="a">Apple</option>

<option value="p">Peach</option>

<option value="t">Turtle</option>

</select>

 

名称                            返回类型                            描述

validate(options)                    返回:Validator                        验证所选的FORM

valid()                                    返回:Boolean                         检查是否验证通过

rules()                                    返回:Options                          返回元素的验证规则

rules(add,rules)            返回:Options                          增加验证规则

rules(remove,rules)

event.keycode大全(javascript)

keycode 8 = BackSpace BackSpace

keycode 9 = Tab Tab

keycode 12 = Clear

keycode 13 = Enter

keycode 16 = Shift_L

keycode 17 = Control_L

keycode 18 = Alt_L

keycode 19 = Pause

keycode 20 = Caps_Lock

keycode 27 = Escape Escape

keycode 32 = space space

keycode 33 = Prior ( PageUp )

keycode 34 = Next (PageDown)

keycode 35 = End

keycode 36 = Home

keycode 37 = Left

keycode 38 = Up

keycode 39 = Right

keycode 40 = Down

keycode 41 = Select

keycode 42 = Print

keycode 43 = Execute

keycode 45 = Insert

keycode 46 = Delete

keycode 47 = Help

keycode 48 = 0 equal braceright

keycode 49 = 1 exclam onesuperior

keycode 50 = 2 quotedbl twosuperior

keycode 51 = 3 section threesuperior

keycode 52 = 4 dollar

keycode 53 = 5 percent

keycode 54 = 6 ampersand

keycode 55 = 7 slash braceleft

keycode 56 = 8 parenleft bracketleft

keycode 57 = 9 parenright bracketright

keycode 65 = a A

keycode 66 = b B

keycode 67 = c C

keycode 68 = d D

keycode 69 = e E EuroSign

keycode 70 = f F

keycode 71 = g G

keycode 72 = h H

keycode 73 = i I

keycode 74 = j J

keycode 75 = k K

keycode 76 = l L

keycode 77 = m M mu

keycode 78 = n N

keycode 79 = o O

keycode 80 = p P

keycode 81 = q Q at

keycode 82 = r R

keycode 83 = s S

keycode 84 = t T

keycode 85 = u U

keycode 86 = v V

keycode 87 = w W

keycode 88 = x X

keycode 89 = y Y

keycode 90 = z Z

keycode 96 = KP_0 KP_0

keycode 97 = KP_1 KP_1

keycode 98 = KP_2 KP_2

keycode 99 = KP_3 KP_3

keycode 100 = KP_4 KP_4

keycode 101 = KP_5 KP_5

keycode 102 = KP_6 KP_6

keycode 103 = KP_7 KP_7

keycode 104 = KP_8 KP_8

keycode 105 = KP_9 KP_9

keycode 106 = KP_Multiply KP_Multiply

keycode 107 = KP_Add KP_Add

keycode 108 = KP_Separator KP_Separator

keycode 109 = KP_Subtract KP_Subtract

keycode 110 = KP_Decimal KP_Decimal

keycode 111 = KP_Divide KP_Divide

keycode 112 = F1

keycode 113 = F2

keycode 114 = F3

keycode 115 = F4

keycode 116 = F5

keycode 117 = F6

keycode 118 = F7

keycode 119 = F8

keycode 120 = F9

keycode 121 = F10

keycode 122 = F11

keycode 123 = F12

keycode 124 = F13

keycode 125 = F14

keycode 126 = F15

keycode 127 = F16

keycode 128 = F17

keycode 129 = F18

keycode 130 = F19

keycode 131 = F20

keycode 132 = F21

keycode 133 = F22

keycode 134 = F23

keycode 135 = F24

keycode 136 = Num_Lock

keycode 137 = Scroll_Lock

keycode 187 = acute grave

keycode 188 = comma semicolon

keycode 189 = minus underscore

keycode 190 = period colon

keycode 192 = numbersign apostrophe

keycode 210 = plusminus hyphen macron

keycode 211 =

keycode 212 = copyright registered

keycode 213 = guillemotleft guillemotright

keycode 214 = masculine ordfeminine

keycode 215 = ae AE

keycode 216 = cent yen

keycode 217 = questiondown exclamdown

keycode 218 = onequarter onehalf threequarters

keycode 220 = less greater bar

keycode 221 = plus asterisk asciitilde

keycode 227 = multiply division

keycode 228 = acircumflex Acircumflex

keycode 229 = ecircumflex Ecircumflex

keycode 230 = icircumflex Icircumflex

keycode 231 = ocircumflex Ocircumflex

keycode 232 = ucircumflex Ucircumflex

keycode 233 = ntilde Ntilde

keycode 234 = yacute Yacute

keycode 235 = oslash Ooblique

keycode 236 = aring Aring

keycode 237 = ccedilla Ccedilla

keycode 238 = thorn THORN

keycode 239 = eth ETH

keycode 240 = diaeresis cedilla currency

keycode 241 = agrave Agrave atilde Atilde

keycode 242 = egrave Egrave

keycode 243 = igrave Igrave

keycode 244 = ograve Ograve otilde Otilde

keycode 245 = ugrave Ugrave

keycode 246 = adiaeresis Adiaeresis

keycode 247 = ediaeresis Ediaeresis

keycode 248 = idiaeresis Idiaeresis

keycode 249 = odiaeresis Odiaeresis

keycode 250 = udiaeresis Udiaeresis

keycode 251 = ssharp question backslash

keycode 252 = asciicircum degree

keycode 253 = 3 sterling

keycode 254 = Mode_switch

 

使用event对象的keyCode属性判断输入的键值

eg:

if(event.keyCode==13)alert(“enter!”);

键值对应表

A             0X65       U             0X85

B             0X66       V             0X86

C             0X67       W            0X87

D             0X68       X             0X88

E             0X69       Y             0X89

F             0X70       Z             0X90

G             0X71       0             0X48

H             0X72       1             0X49

I              0X73       2             0X50

J              0X74       3             0X51

K             0X75       4             0X52

L             0X76       5             0X53

M            0X77       6             0X54

N             0X78       7             0X55

O             0X79       8             0X56

P             0X80       9             0X57

Q             0X81       ESC        0X1B

R             0X82       CTRL      0X11

S             0X83       SHIFT     0X10

T             0X84       ENTER    0XD

 

如果要使用组合键,则可以利用event.ctrlKey,event.shiftKey,event .altKey判断是否按下了ctrl键、shift键以及alt键

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值