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 相关文章推荐
jquery 插件实现瀑布流图片展示实例
Apr 03 Javascript
js绘制圆形和矩形的方法
Aug 05 Javascript
chrome调试javascript详解
Oct 21 Javascript
javascript 组合按键事件监听实现代码
Feb 21 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
Feb 28 Javascript
react-native封装插件swiper的使用方法
Mar 20 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
Aug 24 Javascript
js正则取值的结果数组调试方法
Oct 10 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
Jan 18 Javascript
koa router 多文件引入的方法示例
May 22 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
Jan 21 Javascript
js判断密码强度的方法
Mar 18 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
php设计模式 State (状态模式)
2011/06/26 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
PHP实现简易blog的制作
2016/10/24 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
python实现维吉尼亚加密法
2019/03/20 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
物理专业本科生自荐信
2014/01/30 职场文书
行政内勤岗位职责
2014/04/07 职场文书
读书月活动方案
2014/05/22 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
Windows server 2016服务器基本设置
2022/08/14 Servers