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 相关文章推荐
JavaScript游戏之是男人就下100层代码打包
Nov 08 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
Jan 08 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
Mar 28 Javascript
angularjs中的单元测试实例
Dec 06 Javascript
js实现非常简单的焦点图切换特效实例
May 07 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
基于AngularJS实现的工资计算器实例
Jun 16 Javascript
AngularJS实现注册表单验证功能
Oct 16 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
Apr 12 Javascript
vue使用keep-alive保持滚动条位置的实现方法
Apr 09 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
May 13 Javascript
解决vue项目,npm run build后,报路径错的问题
Aug 13 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操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
PHP操作MySQL事务实例
2014/11/05 PHP
PHP函数超时处理方法
2016/02/14 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
从零学Python之入门(三)序列
2014/05/25 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
简单了解python的一些位运算技巧
2019/07/13 Python
python 同时读取多个文件的例子
2019/07/16 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
python语言中有算法吗
2020/06/16 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
《在家里》教后反思
2014/03/01 职场文书
监察建议书格式
2014/05/19 职场文书
个人欠款担保书
2014/05/20 职场文书
中学图书馆工作总结
2015/08/11 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
各国货币符号大全
2022/02/17 杂记