`
稻-草
  • 浏览: 62691 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JavaScript + 正则式实现表单参数校验

阅读更多

    本文使用的JavaScript多语言实现,请参考:http://dcao.iteye.com/blog/513944

    总体效果如下图:



 

Step 1 指定输入框的类型和输入的范围。

 

    字符串通过realType指定类型为字符串、option表示是否可选、minlength最小长度为2和 maxlength指定最大长度为20。

<input name="user" id="user" type="text" 
     realType="string"  option="true" minlength="2" maxlength="20" >

 

    数字通过realType指定类型为整型、min指定最小值为80、最大值为65535。

<input name="port" id="port" type="text"
     realType="int"  min="80" max="65535" maxlength="5"  >

 

   IP地址只要指定类型为ip就可以。

<input name="ip"  id="ip" type="text" maxlength="15"
    realType="ip">

    等等类型...

 

Step 2 为每个类型写检查函数。

 

     字符串的检查函数

function  checkString(input)
{
    
   if (undefined == input)
   {
	   return true;
   }
   
   // 检查是否可选,默认可选,可选且内容为空就通过检查
   if (input.option!=undefined &&
       input.option=="true" &&
       (input.value==""))
   {
	   return true;
   }

   // 必选不能为空
   if (input.value=="" )
   {
   	  return false;
   }

   // 检查最小长度  
   var minlen = parseInt(input.minLen, 10);
   if((! isNaN(minlen)) && input.value.length < minlen )
   {
      return  false;
   }
   
   // 检查最大长度
   var maxlen= parseInt(input.maxLen, 10);
   if((! isNaN(maxlen) )&& input.value.length > maxlen)
   {
      return false;
   }   
  
    return true;
}

 

 

 

   数字检查函数

function checkInt(input)
{
  
   // 检查是否可选,默认可选,可选且内容为空就通过检查
   if (input.option!=undefined &&
       input.option=="true" &&
       (input.value==""))
   {
	   return true;
   }

   // 必选不能为空
   if (input.value=="" )
   {
   	  return false;
   }
   
   // 和数字正则式比较
   var intReg = /^-?\d+$/;
   if(!input.value.match(intReg))
   {
	  return false;
   }
   
   var value = parseInt(input.value, 10);
   if(isNaN(value))
   {
  	  return false;
   }   
   
   // 检查最小值
   var min = parseInt(input.min, 10);
   if((! isNaN(min)) && value < min )
   {
      return false;
   }
   
      
   // 检查最大值
   var max= parseInt(input.max, 10);
   if((! isNaN(max)) && value > max)
   {
      return false;
   }
   return true;
}

 

   检查IP地址、email等的检查函数和上面的差不多,主要是采用正则式进行判断。

    等等类型的检查函数...

   

Step 3  出错时增加错误提示

    上面的检查函数都是返回true和false,还需要将错误信息提示给用户。

    给用户提示的方式有 Alert对话框、控件边上显示错误信息、冒泡提示等。为了支持多种形式错误提示的切换,提示信息的实现通过将提示函数作为参数传入检查函数实现。

   

    

function  checkString(input, errorFunction)   
{   
       
   ...       
  
   // 必选不能为空   
   if (input.value=="" )   
   {       
      errorFunction(can_not_empty);   
      return false;   
   }   
  
   ...         
    
   // 检查最大长度   
   var maxlen= parseInt(input.maxLen, 10);   
   if((! isNaN(maxlen) )&& input.value.length > maxlen)   
   {   
      errorFunction(str_too_long.fillArgs(input.maxlength));   
      return false;   
   }      
    //从错误改到正确的时候错误提示要清除掉    
   errorFunction();      
   return true;   
} 

 

    弹出错误对话框的函数

function alertError(input, msg)
{	
	if (msg == undefined)
	{
		return true;
	}
	alert(msg);
	input.focus();
	input.select();
	return false;
}

function  checkString(input, alertError) 效果如下图:



 

 

将错误显示到特定错误标签上的函数

function spanError(input, msg)
{
	
	var name = "error" + input.id;
	var span = document.getElementById(name);
	
	if (span == undefined)
	{
		name = "error" + input.name;
		span = document.getElementById(name);
		if (span == undefined)
		{
			// 异常分支
			alert("Need span:" + name);
			return false;
		}
	}
	
	
	if (msg== undefined)
	{
	    span.innerHTML = "<img src='images/right.gif'/> "
	}
	else
	{
	    span.innerHTML = "<img src='images/error.gif'/> " + msg;
	}
	return false;
}

 要求没有控件有对应的错误标签

<input name="ip"  id="ip" type="text" maxlength="15"
    realType="ip">
<Span ID=erroruser></Span>	

  

function  checkString(input, spanError) 效果如下图:



 

 

Step 4 什么时候检查?

 先写个帮助函数,作为所有类型控件的检查入口。

function checkInput(node, errorFunction)
{
     if (node.realType == undefined)
     {
     		return true;
     }
     
     if (errorFunction == undefined)
   	 {
   	   errorFunction = spanError;
  	 }
     
     var thisInputRight = true;
     switch (node.realType) 
     {
 		case "int" :
           if (!checkInt(node, errorFunction))
           {
           	 false;
           }
           break;
           
      case "string" :
           if (!checkString(node, errorFunction))
           {
           	return false;
           };
           break;
      case "ip" :
           if (!checkIp(node, errorFunction))
           {
           	return false;
           };
           break;
      // .....
      default :
           alert("can't find realType: "+node.realType);
           return false;
           break;             
      }        
}

 

 

控件失去焦点的是时候进行检查。

 

<input name="user" id="user" type="text" 
     realType="string"  option="true" minlength="2" maxlength="20" 
     onblur="checkInput(this)"
>

 

表单提交的是很进行检查, 如果检查不通过就终止提交表单。 

   

function checkForm(form, errorFunction)
{
   if (errorFunction == undefined)
   {
   	   errorFunction = spanError;
   }
   
  var nodes = form.all;
  var allRight = true;
  var firstErrorInput = undefined;  
   
  for (var i=0;i<nodes.length;i++)
  {
     var node = nodes[i];
     if (node.realType == undefined)
     {
     	continue;     	
     }
       
     if (!checkInput(node))
     {
     	  allRight = false;
     	  if (firstErrorInput == undefined)
     	  {
            firstErrorInput = node;
            firstErrorInput.focus();
            firstErrorInput.select();
          }
     }
     
  }
  return allRight;
}

  

onsubmit 函数返回失败的是时候就终止表单提交。

<form onsubmit = "return checkForm(this)">
...
</form>

 

  • 大小: 4.6 KB
  • 大小: 6.5 KB
  • 大小: 29.6 KB
2
0
分享到:
评论

相关推荐

    JS版日历+富文本+验证码+JSP动态树+表单验证+时间控件+正则

    本项目结合了多种JavaScript技术,包括日历插件、富文本编辑器、验证码系统、JSP动态树视图、表单验证以及时间控件,并利用正则表达式进行数据校验。以下是这些技术的详细说明: 1. **JS版日历插件**:这是一种...

    用于表单正则校验

    本项目“用于表单正则校验”专注于利用JavaScript的正则表达式进行高效且准确的验证。在JavaScript开发中,正则表达式是一种强大的工具,用于匹配、查找、替换和解析字符串中的模式。 首先,我们需要理解正则表达式...

    JavaScript通过正则表达式实现表单验证电话号码

    本篇文章将深入探讨如何使用正则表达式在JavaScript中实现电话号码的验证。 首先,我们需要理解正则表达式。正则表达式是一种模式匹配工具,用于在字符串中查找、替换或提取符合特定规则的文本。在JavaScript中,...

    正则表达式校验身份证号码

    ### 正则表达式校验身份证号码 #### 知识点概述 身份证号码在中国大陆具有唯一性,用于标识每一个公民的身份。身份证号码分为15位和18位两种格式,其中18位号码是在15位基础上增加了一个4位出生年份以及一位校验码...

    使用AJAX(包含正则表达式)验证用户登录的步骤

    本篇文章将详细阐述如何使用AJAX结合正则表达式来实现用户登录验证的步骤。首先,我们需要理解AJAX(Asynchronous JavaScript and XML)的基本原理,它允许我们在不刷新整个页面的情况下与服务器进行异步通信,从而...

    javascript正则表达式表单验证大全

    ### JavaScript正则表达式在表单验证中的应用详解 在Web开发中,表单验证是确保数据质量和用户体验的重要环节。JavaScript正则表达式提供了一种强大的工具,用于前端数据校验,确保用户输入的数据格式正确无误。...

    validate校验正则表达式验证

    在本主题“validate校验正则表达式验证”中,我们主要探讨如何利用validate库进行正则表达式的校验工作,以及如何结合自定义的正则表达式进行数据验证。 validate库通常提供了一系列预定义的验证规则,其中包括对...

    JS input正则验证大全

    本资源包“JS input正则验证大全”主要聚焦于使用JavaScript进行输入框(input)的各种类型的数据验证,包括英文、中文、邮箱、手机号、银行卡和身份证等常见字段的正则校验规则。以下是对这些知识点的详细说明: 1...

    邮箱校验正则表达式

    在给定的示例代码中,我们可以看到使用JavaScript来实现邮箱校验正则表达式的验证。首先,我们需要获取用户输入的邮箱地址,然后使用正则表达式来判断输入的字符串是否符合邮箱地址的格式。如果输入的字符串不符合...

    JavaScript验证正则表达式大全

    JavaScript中的正则表达式是用于文本模式匹配的强大工具,它在数据验证、字符串处理等方面有着广泛的应用。在JavaScript中,正则表达式可以用来检查字符串是否符合特定的格式,例如邮箱地址、电话号码、身份证号等。...

    正则表达式验证表单

    下面将根据提供的代码示例,详细介绍如何使用JavaScript中的正则表达式来实现常见表单字段的有效性验证。 #### IP地址验证 IP地址是一种用于标识互联网上主机的标准格式。IPv4地址通常由四个0到255之间的数字组成...

    javascript常用数据校验正则表达式

    "javascript常用数据校验正则表达式"这个主题涉及到的是在前端开发中如何使用正则来验证用户输入的数据,确保其格式正确性。下面将详细讨论JavaScript中正则表达式的常见用法以及`validate.js`这个文件可能包含的...

    全面的js表单验证包含正则表达式还有本人写的表单验证

    JavaScript(简称JS)是网页开发中用于实现动态交互的重要脚本语言,特别是在处理用户输入时,表单验证显得尤为重要。这个资源包显然提供了一个全面的JS表单验证解决方案,包括了正则表达式和作者自编的验证逻辑,...

    常用的表单校验正则表达式

    ### 常用的表单校验正则表达式知识点详解 #### 1. IP地址验证 在Web开发中,经常需要对用户输入的IP地址进行有效性验证。一个标准的IPv4地址由四个介于0到255之间的数字组成,并且这四个数字之间用点分隔。 **代码...

Global site tag (gtag.js) - Google Analytics