从阿里妈妈发现的几个不错的表单验证函数


Posted in Javascript onSeptember 21, 2007

//--------
// 检查当前浏览器是否为Netscape
//--------
function isNetscape(){
    app=navigator.appName.substring(0,1);
    if (app=='N') return true;
    else {return false;}
}

//--------
// 保存当前Form表单(仅适用于IE浏览器)
//--------
function formSaveCheck(fileName){
    if(isNetscape()){alert("Sorry, these function is not supported")}    
    else document.execCommand('SaveAs',null,fileName)
}

//--------
// 校验数据的合法性
//--------
function isValidReg( chars){
    var re=/<|>|\[|\]|\{|\}|『|』|※|○|●|◎|§|△|▲|☆|★|◇|◆|□|?|?|?|?|⊙|?|ㄅ|ㄆ|
ㄇ|ㄈ|ㄉ|ㄊ|ㄋ|ㄌ|ㄍ|ㄎ|ㄏ|ㄐ|ㄑ|ㄒ|ㄓ|ㄔ|ㄕ|ㄖ|ㄗ|ㄘ|ㄙ|ㄚ|ㄛ|ㄜ|ㄝ|ㄞ|ㄟ|ㄢ|ㄣ|ㄤ|ㄥ|ㄦ|ㄧ|ㄨ|ㄩ
|■|?|?|\*|@|#|\^|\\/;
    if (re.test( chars) == true) {
        return false;
    }else{
        return true;
    }    
}

//--------
// 检查数据的长度是否合法
//--------
function isValidLength(chars, len) {
    if (chars.length > len) {
        return false;
    }
    return true;
}

//--------
// 校验URL的合法性
//--------
function isValidURL( chars ) {
    //var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)((((\w+(-*\w*)+)\.)+((com)|
(net)|(edu)|(gov)|(org)|(biz)|(aero)|(coop)|(info)|(name)|(pro)|(museum))(\.([a-z]{2}))?)|((\w+(-
*\w*)+)\.(cn)))$/;
    var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(\S+\.\S+)$/;
    //var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(((((\w+(-*\w*)+)\.)+((com)|
(net)|(edu)|(gov)|(org)|(biz)|(aero)|(coop)|(info)|(name)|(pro)|(museum)|(cn)|(tv)|(hk))(\.([a-z]
{2}))?)|((\w+(-*\w*)+)\.(cn)))((\/|\?)\S*)*)$/;
    if (!isNULL(chars)) {
        chars = jsTrim(chars);
        if (chars.match(re) == null)
            return false;
        else
            return true;
    }
    return false;
}

//--------
// 校验数字的合法性
//--------
function isValidDecimal( chars ) {
    var re=/^\d*\.?\d{1,2}$/;
    if (chars.match(re) == null)
        return false;
    else
        return true;
}

//--------
// 校验数字的合法性
//--------
function isNumber( chars ) {
    var re=/^\d*$/;
    if (chars.match(re) == null)
        return false;
    else
        return true;
}

//--------
// 校验邮编的合法性
//--------
function isValidPost( chars ) {
    var re=/^\d{6}$/;
    if (chars.match(re) == null)
        return false;
    else
        return true;
}

//--------
// 去掉数据的首尾空字符
//--------
function jsTrim(value){
  return value.replace(/(^\s*)|(\s*$)/g,"");
}

//--------
// 校验数据是否为空(当数据为空字符时也为NULL)
//--------
function isNULL( chars ) {
    if (chars == null)
        return true;
    if (jsTrim(chars).length==0)
        return true;
    return false;
}

//--------
// 校验Email的合法性
//--------
function checkEmail (fieldName, bMsg) 
{
    var emailStr = fieldName.value;

    var emailPat=/^(.+)@(.+)$/
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
    var validChars="\[^\\s" + specialChars + "\]"
    var quotedUser="(\"[^\"]*\")"
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    var atom=validChars + '+'
    var word="(" + atom + "|" + quotedUser + ")"
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

    var matchArray=emailStr.match(emailPat)
    if (matchArray==null) 
    {
        if (bMsg) alert("Email address seems incorrect (check @ and .'s)")
        return false
    }
    var user=matchArray[1]
    var domain=matchArray[2]

    // See if "user" is valid 
    if (user.match(userPat)==null) 
    {
        if (bMsg) alert("The Email address seems incorrect.")
        // fieldName.focus();
        return false
    }

    /* if the e-mail address is at an IP address (as opposed to a symbolic
       host name) make sure the IP address is valid. */
    var IPArray=domain.match(ipDomainPat)
    if (IPArray!=null) 
    {
        for (var i=1;i<=4;i++)
        {
            if (IPArray[i]>255)
            {
                if (bMsg) alert("Destination IP address is invalid!")
                return false
            }
        }
        return true
    }

    // Domain is symbolic name
    var domainArray=domain.match(domainPat)
    if (domainArray==null) 
    {
        if (bMsg) alert("The domain name doesn't seem to be valid.")
        return false
    }

    /* domain name seems valid, but now make sure that it ends in a
    three-letter word (like com, edu, gov) or a two-letter word,
    representing country (uk, nl), and that there's a hostname preceding 
    the domain or country. */

    var atomPat=new RegExp(atom,"g")
    var domArr=domain.match(atomPat)
    var len=domArr.length
    if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 
    {
        // the address must end in a two letter or three letter word.
        if (bMsg) alert("The address must end in a three-letter domain, or two letter country.")
        return false
    }

    // Make sure there's a host name preceding the domain.
    if (len<2)
    {
        if (bMsg) alert("This address is missing a hostname!")
        return false
    }

    // If we've got this far, everything's valid!
    return true;
}

//--------
// 判断是否为闰年
//--------
function isLeapYear(year){
  if (year % 4 != 0)
    return false;
  if (year % 400 == 0)
    return true;
  if (year % 100 == 0)
    return false;
  return true;
}

//--------
// 校验日期的合法性
//--------
function validateDate(day,month,year)
{
    if ((day<=0)||(month<=0)||(year<=0))
        return false;

    if ((month>=1)&&(month<=12)) {
        if (month == 2) {
            if (isLeapYear(year)) {
                if (day<=29) 
                    return true;
            } else {
                if (day<=28)
                    return true;
                else
                    return false;
            }
        } else if ((month==4)||(month==6)||(month==9)||(month==11)) {
            if (day<=30)
                return true;
            else
                return false;
        } else {
            if (day<=31)
                return true;
            else
                return false;
        }
    }

    return false;
}

//--------
// 判断数据是否包含都是Single Byte
//--------
function isSingleByteString(str)
{
   var rc = true;
   var j = 0, i = 0;
   for (i=0; i<str.length; i++) {
     j = str.charCodeAt(i);
     if (j>=128) {
       rc = false;
       break;
     }
   }
   return rc;
}

var submitEvent = true;
function checkDoubleSubmit(){
    return submitEvent;
}

//--------
// 弹出窗口
// 参数:url-弹出窗口显示URL的内容
//       w-弹出窗口的宽度
//       h-弹出窗口的高度
//       isCenter-控制弹出窗口是否在屏幕中央显示,值为true/false
//       isResizable-控制弹出窗口是否可以改变大小,值为true/false
//       isScroll-控制弹出窗口是否有滚动条,值为true/false
//--------
function popupWindow(url,w,h,isCenter,isResizable,isScroll) {
    if (isNULL(url)) return;
    var scrLeft = 0;
    var scrTop = 0;
    var scroll = "no";
    var resize = "no";
    if (isCenter) {
        scrLeft = (screen.width-w)/2;
        scrTop = (screen.height-h)/2;
    }
    if (isResizable) resize="yes";
    if (isScroll) scroll = "yes";
    window.open(url, 'popupWindow', 
'height='+h+',width='+w+',top='+scrTop+',left='+scrLeft+',toolbar=no,menubar=no,scrollbars='+scrol
l+',resizable='+resize+',location=no,status=no');
}

//--------
// 弹出窗口
// 参数:url-弹出窗口显示URL的内容
//       w-弹出窗口的宽度
//       h-弹出窗口的高度
//       isCenter-控制弹出窗口是否在屏幕中央显示,值为true/false
//       isResizable-控制弹出窗口是否可以改变大小,值为true/false
//       isModal-控制弹出窗口是否为模式或非模式对话框,值为ture/false
//--------
function popupModalWindow(url,w,h,isCenter,isResizable,isModal) {
    if (isNULL(url)) return;
    var scrLeft = 0;
    var scrTop = 0;
    var resize = "no";
    var cnt = "no";
    if (isCenter) {
        cnt="yes";
        scrLeft = (screen.width-w)/2;
        scrTop = (screen.height-h)/2;
    }
    if (isResizable) resize="yes";
    if (isModal)
        window.showModalDialog(url, 'popupWindow', 
'dialogWidth:'+w+'px;dialogHeight:'+h+'px;dialogLeft:'+scrLeft+'px;dialogTop:'+scrTop+'px;center:'
+cnt+';help:no;resizable:'+resize+';status:no');
    else
        window.showModelessDialog(url, 'popupWindow', 
'dialogWidth:'+w+'px;dialogHeight:'+h+'px;dialogLeft:'+scrLeft+'px;dialogTop:'+scrTop+'px;center:'
+cnt+';help:no;resizable:'+resize+';status:no');
}

//--------
// 弹出窗口
// 参数:url-弹出窗口显示URL的内容
//       w-弹出窗口的宽度
//       h-弹出窗口的高度
//       isCenter-控制弹出窗口是否在屏幕中央显示,值为true/false
//       isResizable-控制弹出窗口是否可以改变大小,值为true/false
//       isScroll-控制弹出窗口是否有滚动条,值为true/false
//--------
function openWindowCenter(urll,w,h){
  var top=(window.screen.height-h)/2;
  var left=(window.screen.width-w)/2;
  var param='toolbar=no,menubar=no,scrollbars=yes,resizable=no,location=no, status=no,top=';
  param=param+top;
  param=param+',left=';
  param=param+left;
  param=param+',height='+h;
  param=param+',width='+w;
  var w=window.open (urll,"",param)
  if(w!=null && typeof(w)!="undefined"){
        w.focus();
  }
}

<script language="javascript">
function encodeHtmlForText(text){
  text = text.replace(new RegExp("&","gm"),"&");
  text = text.replace(new RegExp("<","gm"),"<");
  text = text.replace(new RegExp(">","gm"),">");
  text = text.replace(new RegExp("\'","gm"),"'");
  text = text.replace(new RegExp("\"","gm"),""");
  return text;
}
function encodeHtmlForURL(url){
  url = url.replace(new RegExp("<","gm"),"<");
  url = url.replace(new RegExp(">","gm"),">");
  url = url.replace(new RegExp("\'","gm"),"'");
  url = url.replace(new RegExp("\"","gm"),""");
  return url;
}
function title_url_change(oipt) {
  if(oipt){
      var cnt = oipt.value.length;
    if(cnt<17){
        $i("cntTitle").style.color="blue";
        $i("cntTitle").innerHTML="(您已输入"+cnt+"字)";
    }else{
        $i("cntTitle").style.color="red";
        $i("cntTitle").innerHTML="(文本超长!您已输入"+cnt+"字)";
    }
  }
  var title = $i('_fmm.t._0.ti').value;
  var clickurl = $i('_fmm.t._0.cl').value;
  title = encodeHtmlForText(title);
  clickurl = encodeHtmlForURL(clickurl);
  $i('adTitle').innerHTML = '<a href='+clickurl+'>'+title+'</a>';
}
function title_change() {
  var title = $i('_fmm.t._0.ti').value;
  title = encodeHtmlForText(title);
  $i('adTitle').innerHTML = title;
}
function description_change(oipt) {
  if(oipt){
      var cnt = oipt.value.length;
    if(cnt<33){
        $i("cntDesc").style.color="blue";
        $i("cntDesc").innerHTML="(您已输入"+cnt+"字)";
    }else{
        $i("cntDesc").style.color="red";
        $i("cntDesc").innerHTML="(文本超长!您已输入"+cnt+"字)";
    }
  }
  var desc = $i('_fmm.t._0.d').value;
  desc = encodeHtmlForText(desc);
  $i('adDesc').innerHTML = desc;
}
function dispurl_change() {
  var dispurl = $i('_fmm.t._0.di').value;
  dispurl = encodeHtmlForURL(dispurl);
  $i('adDispUrl').innerHTML = dispurl;
}
function linkurl_change() {
  var clickurl = $i('_fmm.t._0.cl').value;
  clickurl = encodeHtmlForURL(clickurl);
  $i('adClickUrl').innerHTML = clickurl;
}
function check_count($str){
if (!$str) return 0;
var $c=0;
for (var $i=0;$i<$str.length;$i++){
   if ($str.charCodeAt($i) > 255){
        $c++;
        $c++;
    }else
        $c++;
}
return $c;
}
function validation() {
    $i('_fmm.t._0.n').value = jsTrim($i('_fmm.t._0.n').value);
    $i('_fmm.t._0.ti').value = jsTrim($i('_fmm.t._0.ti').value);
    $i('_fmm.t._0.d').value = jsTrim($i('_fmm.t._0.d').value);
    $i('_fmm.t._0.di').value = jsTrim($i('_fmm.t._0.di').value);
    $i('_fmm.t._0.cl').value = jsTrim($i('_fmm.t._0.cl').value);

    var adName = $i('_fmm.t._0.n').value;
    var adtitle = $i('_fmm.t._0.ti').value;
    var addescription = $i('_fmm.t._0.d').value;
    var addispurl = $i('_fmm.t._0.di').value;
    var adclickurl = $i('_fmm.t._0.cl').value;
    var msg="";

    $i('_fmm.t._0.t').value = jsTrim($i('_fmm.t._0.t').value);

    var tags = $i('_fmm.t._0.t').value;

    if(!isValidReg(tags)){
        msg=msg+"关键词包含非法字符!\n";
    }
    if(!isValidLength(tags,32)){
        msg=msg+"您输入的关键词长度超过限制!\n"
    }

    if(isNULL(adName)){
        msg=msg+"请输入广告名称!\n";
    }
    if(!isValidReg(adName)){
        msg=msg+"广告名称包含非法字符!\n";
    }
    if(!isValidLength(adName,16)){
        msg=msg+"输入广告名称长度超过限制!\n"
    }
    if(isNULL(adtitle)){
        msg=msg+"请输入标题内容!\n";
    }
    if(!isValidLength(adtitle,16)){
        msg=msg+"输入标题长度超过限制!\n";
    }
    if(!isValidReg(adtitle)){
        msg=msg+"标题内容包含非法字符!\n";
    }
    if(isNULL(addescription)){
        msg=msg+"请输入描述内容!\n";
    }
    if(!isValidLength(addescription,32)){
        msg=msg+"输入描述长度超过限制!\n";
    }
    if(!isValidReg(addescription)){
        msg=msg+"描述内容包含非法字符!\n";
    }
    if(isNULL(addispurl)){
        msg=msg+"请输入显示网址内容!\n";
    }
    if(!isValidLength(addispurl,1024)){
        msg=msg+"输入显示网址长度超过限制!\n";
    }
    if(!isValidURL(addispurl)){
        msg=msg+"显示网址输入不合法!\n";
    }
    if(isNULL(adclickurl)){
        msg=msg+"请输入链接网址内容!\n";
    }
    if(!isValidLength(adclickurl,512)){
        msg=msg+"输入链接网址长度超过限制!\n";
    }
    if(!isValidURL(adclickurl)){
        msg=msg+"链接网址输入不合法!\n";
    }
    if(getHostName(adclickurl)!=getHostName(addispurl)){
        msg=msg+"显示URL必须与链接URL位于同一域名下\n";
    }
    if(!isNULL(msg)){
        alert(msg);
        return false;
    }
    return true;
}

function getHostName(a){
    a = a.toLowerCase();
    var headlength = 0;
    if(a.indexOf("http://")==0){
        headlength = 7;
    }else if(a.indexOf("https://")==0){
        headlength = 8;
    }
    a = a.substr(headlength);
    if(a.indexOf("/")>-1){
        a = a.substr(0,a.indexOf("/"));
    }
    return a;
}

function addConfirm(form) {
    var isvalidate = validation();
    if(isvalidate){
        form.submit();
    }else{
        return false;
    }
}
function doTest() {
    var adclickurl = $i('_fmm.t._0.cl').value;
    var msg = '';
    if(isNULL(adclickurl)){
        msg=msg+"请输入链接网址内容!\n";
    }
    if(!isValidLength(adclickurl,512)){
        msg=msg+"输入链接网址长度超过限制!\n";
    }
    if(!isValidURL(adclickurl)){
        msg=msg+"链接网址输入不合法!\n";
    }
    if(!isNULL(msg)){
        alert(msg);
        return false;
    }
    popup = window.open(adclickurl, 'popupnav', 
'width=400,height=300,left=480,top=250,resizable=1,scrollbars=yes');
    return false;
}
function doInit() {
    var dispURL = $i('_fmm.t._0.di');
    var clickURL = $i('_fmm.t._0.cl');
    if(clickURL.value == '') {
       clickURL.value = 'http://';
    }
    if(dispURL.value == '') {
       dispURL.value = 'http://';
    }
}
doInit();
</script>

Javascript 相关文章推荐
将函数的实际参数转换成数组的方法
Jan 25 Javascript
固定表格行列(expression)在IE下适用
Jul 25 Javascript
JavaScript中对象property的删除方法介绍
Dec 30 Javascript
JS中捕获console.log()输出的方法
Apr 16 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
Apr 24 Javascript
Ext JS 实现建议词模糊动态搜索功能
May 13 Javascript
JS实现的简单分页功能示例
Aug 23 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
Mar 19 Javascript
vue router 通过路由来实现切换头部标题功能
Apr 24 Javascript
vue使用map代替Aarry数组循环遍历的方法
Apr 30 Javascript
指定js可访问其它域名的cookie的方法
Sep 18 #Javascript
完整显示当前日期和时间的JS代码
Sep 17 #Javascript
符合标准的js表单提交的代码
Sep 13 #Javascript
js类后台管理菜单类-MenuSwitch
Sep 12 #Javascript
一实用的实现table排序的Javascript类库
Sep 12 #Javascript
JS类定义原型方法的两种实现的区别评论很多
Sep 12 #Javascript
js类中获取外部函数名的方法与代码
Sep 12 #Javascript
You might like
ASP和PHP都是可以删除自身的
2007/04/09 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
document.all与WEB标准
2020/05/13 Javascript
AutoSave/自动存储功能实现
2007/03/24 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
vue filters的使用详解
2018/06/11 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
Python用GET方法上传文件
2015/03/10 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
公司JAVA开发面试题
2015/04/02 面试题
大学生应聘推荐信范文
2013/11/19 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
第一军规观后感
2015/06/12 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
四则混合运算教学反思
2016/02/23 职场文书
高二英语教学反思
2016/03/03 职场文书