javascript form 验证函数 弹出对话框形式


Posted in Javascript onJune 23, 2009
/** 
* 得到中英文字符长 
* @param {} str 
* @return {} 
*/ 
function LengthB(str){ 
var p1 = new RegExp('%u..', 'g') 
var p2 = new RegExp('%.', 'g') 
return escape(str).replace(p1, '').replace(p2, '').length 
} 
/** 
* 过滤所有空格字符 
* @param {Object} str 
*/ 
function jsTrim(str){ 
str += ""; 
while ((str.charAt(0) == ' ') || (str.charAt(0) == '???') || (escape(str.charAt(0)) == '%u3000')) 
str = str.substring(1, str.length); 
while ((str.charAt(str.length - 1) == ' ') || (str.charAt(str.length - 1) == '???') || (escape(str.charAt(str.length - 1)) == '%u3000')) 
str = str.substring(0, str.length - 1); 
return str; 
} 
/** 
* 过滤中间字符串和多个空格 
* @param {Object} inputString 
*/ 
function trim(inputString){ 
if (typeof inputString != "string") { 
return inputString; 
} 
var retValue = inputString; 
var ch = retValue.substring(0, 1); 
while (ch == " ") { 
//检查字符串开始部分的空格 
retValue = retValue.substring(1, retValue.length); 
ch = retValue.substring(0, 1); 
} 
ch = retValue.substring(retValue.length - 1, retValue.length); 
while (ch == " ") { 
//检查字符串结束部分的空格 
retValue = retValue.substring(0, retValue.length - 1); 
ch = retValue.substring(retValue.length - 1, retValue.length); 
} 
while (retValue.indexOf(" ") != -1) { 
//将文字中间多个相连的空格变为一个空格 
retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ") + 1, retValue.length); 
} 
return retValue; 
} 
/** 
* 过滤字符串,指定过滤内容,如果内容为空,则默认过滤 '~!@#$%^&*()-+." 
* @param {Object} str 
* @param {Object} filterStr 
* 
* @return 包含过滤内容,返回True,否则返回false; 
*/ 
function FilterStr(str, filterStr){ 
filterStr = filterStr == "" ? "'~!@#$%^&*()-+.\"" : filterStr 
var ch; 
var i; 
var temp; 
var error = false;//当包含非法字符时,返回True 
for (i = 0; i <= (filterStr.length - 1); i++) { 
ch = filterStr.charAt(i); 
temp = str.indexOf(ch); 
if (temp != -1) { 
error = true; 
break; 
} 
} 
return error; 
} 
/** 
* 过滤指定内容字符串 
* @param {Object} str 检查字符串 
* @param {Object} filterStr 过滤字符串,内容为空,则默认过滤 '~!@#$%^&*()-+." 
* @param {Object} alertStr 弹出对话内容 
* @param {Object} idStr 出错返回出错字段ID 
*/ 
function ISFilterStr(str, filterStr, alertStr, idStr){ 
alertStr = "对不起,您输入的 " + alertStr + " 不允包含 " + filterStr + " 非法字符"; 
if (FilterStr(str, filterStr)) 
this.AlertAndRFalse(alertStr, idStr); 
} 
/** 
* 检查是否为网址 
* @param {} str_url 
* @param {} alertStr 弹出字段内容 
* @param {} idStr 光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>不是</b>网址返回false; 
*/ 
function IsURL(str_url, alertStr, idStr){// 验证url 
alertStr = alertStr + " 格式不正确!"; 
var strRegex = "^((https|http|ftp|rtsp|mms)?://)" + 
"?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" // ftp的user@ 
+ 
"(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184 
+ 
"|" // 允许IP和DOMAIN(域名) 
+ 
"([0-9a-z_!~*'()-]+\.)*" // 域名- www. 
+ 
"([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名 
+ 
"[a-z]{2,6})" // first level domain- .com or .museum 
+ 
"(:[0-9]{1,4})?" // 端口- :80 
+ 
"((/?)|" // a slash isn't required if there is no file name 
+ 
"(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"; 
var re = new RegExp(strRegex); 
if (!re.test(str_url)) 
this.AlertAndRFalse(alertStr, idStr); 
} 
/** 
* 检查是否为电子邮件 
* @param {} str 
* @param {} alertStr 弹出字段内容 
* @param {} idStr 光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>不是</b>电子邮件返回false; 
*/ 
function IsEmail(str, alertStr, idStr){ 
alertStr = alertStr + " 格式不正确!"; 
var re = /^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; 
if (!re.test(str)) 
this.AlertAndRFalse(alertStr, idStr); 
} 
/** 
* 检查是否为数字 
* @param {} str 
* @param {} alertStr 弹出字段内容 
* @param {} idStr 光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>不是</b>数字返回false; 
*/ 
function IsNum(str, alertStr, idStr){ 
alertStr = alertStr + " 应该由数字组成!"; 
var re = /^[\d]+$/ 
if (!re.test(str)) 
this.AlertAndRFalse(alertStr, idStr); 
} 
/** 
* 检查数值是否在给定范围以内<br> 
* @param {} str_num 
* @param {} moreLen 应该大于或者等于的数值 
* @param {} lessLen 应该小于或者等于的数值 
* @param {} alertStr 弹出字段内容 
* @param {} idStr 光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>小于最小数值或者大于最大数值</b>数字返回false; 
*/ 
function IsRangeNum(str_num, moreLen, lessLen, alertStr, idStr){ 
IsNum(str_num, alertStr, idStr); 
if (moreLen != "") { 
alertStr = alertStr + " 数值不能小于 " + moreLen; 
if (str_num < moreLen) 
this.AlertAndRFalse(alertStr, idStr); 
} 
if (lessLen != "") { 
alertStr = alertStr + " 数值不能大于 " + lessLen; 
if (str_num > lessLen) 
this.AlertAndRFalse(alertStr, idStr); 
} 
if (moreLen == "" && lessLen == "") 
this.AlertAndRFalse("没有定义最大最小长度!", idStr); 
} 
/** 
* 检查是否为合格字符串(不区分大小写)<br> 
* 长度在6至20位,并且是由a-z0-9_组成的字符串 
* @param {} str 检查的字符串 
* @param {} alertStr 弹出字段内容 
* @param {} idStr 光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>不是</b>"长度在6至20位且由a-z0-9_"组成返回false; 
*/ 
function IsLicit(str, alertStr, idStr){ 
alertStr = "对不起," + alertStr + " 不能为空并且只能由 0到9 a到z 下划线 的6到20位组成! "; 
var re = /^[_0-9a-zA-Z]{6,20}$/ 
if (!re.test(str)) 
this.AlertAndRFalse(alertStr, idStr); 
} 
/** 
* 检查二个字符串是否相等 
* @param {} str1 第一个字符串 
* @param {} str2 第二个字符串 
* @param {} alertStr 弹出字段内容 
* @param {} idStr 光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} 字符串不相等返回false; 
*/ 
function IsStrEquals(str1, str2, alertStr, idStr){ 
alertStr = "二次 " + alertStr + " 不一致!"; 
if (str1 != str2) 
this.AlertAndRFalse(alertStr, idStr); 
} 
/** 
* 检查字符串是否在给定长度范围以内(中文字符以2个字节计算)<br> 
* 
* @param {} str 检查的字符 
* @param {} moreLen 应该大于或者等于的长度 
* @param {} lessLen 应该小于或者等于的长度 
* @param {} alertStr 弹出字段内容 
* @param {} idStr 光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>小于最小长度或者大于最大长度</b>数字返回false; 
*/ 
function IsRange(str, moreLen, lessLen, alertStr, idStr){ 
var strLen = LengthB(str); 
if (moreLen != "") { 
alertStr = alertStr + " 应该大于或等于 " + moreLen + " 个字节长度!"; 
if (strLen < moreLen) 
this.AlertAndRFalse(alertStr, idStr); 
} 
if (lessLen != "") { 
alertStr = alertStr + " 应该小于或等于 " + lessLen + " 个字节长度!"; 
if (strLen > lessLen) 
this.AlertAndRFalse(alertStr, idStr); 
} 
if (moreLen == "" && lessLen == "") 
this.AlertAndRFalse("没有定义最大最小长度!", idStr); 
} 
/** 
* 检查字符串是否小于给定长度范围(中文字符以2个字节计算)<br> 
* @param {} str 字符串 
* @param {} lessLen 小于或等于长度 
* @param {} alertStr 弹出字段内容 
* @param {} idStr 光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>大于给定长度</b>数字返回false; 
*/ 
function IsLess(str, lessLen, alertStr, idStr){ 
IsRange(str, "", lessLen, alertStr, idStr); 
} 
/** 
* 检查字符不为空 
* @param {} str 
* @param {} alertStr 弹出字段内容 
* @param {} idStr 光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>字符为空</b>返回false; 
*/ 
function IsEmpty(str, alertStr, idStr){ 
alertStr = alertStr + " 不能为空!"; 
if (str == "") 
this.AlertAndRFalse(alertStr, idStr); 
} 
/** 
* 弹出警示框,并定位到出错字段上 
* @param {} alertStr 弹出警告框内容 
* @param {} idStr 返回字段焦点 
* @return {Boolean} 返回false 
*/ 
function AlertAndRFalse(alertStr, idStr){ 
alert(alertStr); 
document.getElementById(idStr).focus(); 
throw "valueErr"; 
} 
// JavaScript Document 
调用示例 
function checkForm() { 
try { 
var title = trim(document.getElementById('title')); //文章标题 
IsEmpty(title,"文章标题","title");//不可为空 
IsLess(title,100,"文章标题","title");//标题应少于100个字符长 
ISFilterStr(title, "~`!@#$%^&*()-=_+[]{}|\\;':\",./<>?", "文章标题","title")//标题不允许包含这些非法字符 
} catch(err) { 
if(err == "valueErr") 
return false; 
} 
}
Javascript 相关文章推荐
扩展String功能方法
Sep 22 Javascript
javascript 动态参数判空操作
Dec 22 Javascript
使用Grunt.js管理你项目的应用说明
Apr 24 Javascript
jQuery.holdReady()使用方法
May 20 Javascript
jQuery插件实现文件上传功能(支持拖拽)
Aug 27 Javascript
Angular.Js的自动化测试详解
Dec 09 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
Mar 21 Javascript
微信小程序 后台登录(非微信账号)实例详解
Mar 31 Javascript
vue中各种通信传值方式总结
Feb 14 Javascript
基于node+vue实现简单的WebSocket聊天功能
Feb 01 Javascript
js 将多个对象合并成一个对象 assign方法的实现
Sep 24 Javascript
适合后台管理系统开发的12个前端框架(小结)
Jun 29 Javascript
WordPress 照片lightbox效果的运用几点
Jun 22 #Javascript
WordPress JQuery处理沙发头像
Jun 22 #Javascript
JQuery 前台切换网站的样式实现
Jun 22 #Javascript
利用JQuery为搜索栏增加tag提示
Jun 22 #Javascript
web 页面分页打印的实现
Jun 22 #Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 #Javascript
实现超用户体验 table排序javascript实现代码
Jun 22 #Javascript
You might like
php+mysql写的简单留言本实例代码
2008/07/25 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
python绘制规则网络图形实例
2019/12/09 Python
详解python中的lambda与sorted函数
2020/09/04 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
语文教学感言
2014/02/06 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
继续教育个人总结
2015/03/03 职场文书
小学教师工作总结2015
2015/04/07 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
追悼词范文大全
2015/06/23 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js