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


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操作文本框readOnly
May 15 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
Jun 04 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
Apr 25 Javascript
js性能优化技巧
Nov 29 Javascript
基于javascript实现窗口抖动效果
Jan 03 Javascript
原生js实现验证码功能
Mar 16 Javascript
Require.js的基本用法详解
Jul 03 Javascript
VUE2实现事件驱动弹窗示例
Oct 21 Javascript
vue实现移动端悬浮窗效果
Dec 01 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
Apr 04 Javascript
在layui tab控件中载入外部html页面的方法
Sep 04 Javascript
优雅的使用javascript递归画一棵结构树示例代码
Sep 22 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
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
JavaScript 数组运用实现代码
2010/04/13 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
js module大战
2019/04/19 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
Python简单实现区域生长方式
2020/01/16 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
大学生学习生活的自我评价
2013/11/01 职场文书
安全标语口号
2014/06/09 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
使用 Apache 反向代理的设置技巧
2022/01/18 Servers
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL