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 tab插件制作实现代码
Jun 22 Javascript
jQuery ajax serialize() 方法使用示例
Nov 02 Javascript
express的中间件cookieParser详解
Dec 04 Javascript
jquery实现表单验证简单实例演示
Nov 23 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
Jun 16 Javascript
常用Javascript函数与原型功能收藏(必看篇)
Oct 09 Javascript
JavaScript面向对象分层思维全面解析
Nov 22 Javascript
详解Vue方法与事件
Mar 09 Javascript
快速使用node.js进行web开发详解
Apr 26 Javascript
详解AngularJS2 Http服务
Jun 26 Javascript
使用JSON格式提交数据到服务端的实例代码
Apr 01 Javascript
VUE.js实现动态设置输入框disabled属性
Oct 28 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批量生成缩略图的代码
2008/07/19 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
php无限极分类实现方法分析
2019/07/04 PHP
js 代码优化点滴记录
2012/02/19 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
python模拟enum枚举类型的方法小结
2015/04/30 Python
Python中functools模块的常用函数解析
2016/06/30 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
Django后台admin的使用详解
2019/07/08 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
怎样填写就业意向
2014/04/02 职场文书
机关作风建设整改方案
2014/10/27 职场文书
员工评语范文
2014/12/31 职场文书
亮剑观后感600字
2015/06/05 职场文书
毕业设计工作总结
2015/08/14 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
2016年主题党日活动总结
2016/04/05 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL