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


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 相关文章推荐
javascript function、指针及内置对象
Feb 19 Javascript
AJAX分页的代码(后台asp.net)
Feb 14 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
Aug 15 Javascript
P3P Header解决Cookie跨域的问题
Mar 12 Javascript
JQuery对id中含有特殊字符的转义处理示例
Sep 06 Javascript
JQuery操作单选按钮以及复选按钮示例
Sep 23 Javascript
JavaScript获得页面base标签中url的方法
Apr 03 Javascript
javascript实现网页字符定位的方法
Jul 14 Javascript
使用jQuery UI库开发Web界面的简单入门指引
Apr 22 Javascript
移动端横屏的JS代码(beta)
May 16 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
May 10 Javascript
JavaScript 防盗链的原理以及破解方法
Dec 29 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
YII使用url组件美化管理的方法
2015/12/28 PHP
php实现的操作excel类详解
2016/01/15 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
JsRender实用入门教程
2014/10/31 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
网络管理员岗位职责
2014/03/17 职场文书
班主任个人工作反思
2014/04/28 职场文书
篮球比赛口号
2014/06/10 职场文书
数学教育专业求职信
2014/07/22 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
优秀大学生自荐信
2015/03/26 职场文书
项目验收申请报告
2015/05/15 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis
MySQL数据库查询之多表查询总结
2022/08/05 MySQL