`
lip009
  • 浏览: 1893 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

一个简单的JavaScript表单验证框架

阅读更多

1.validate.js

/**
 * 通常在我们的HTML页面表单中有大量的数据验证工作,
 * 免不了要写很多验证表单的js代码,这是一项非常繁琐
 * 枯燥的工作。很多程序员也会经常遗漏这项工作。当然
 * 一些JavaEE框架中有一些比较好的验证框架提供给我们
 * 使用,但是也是需要很多繁琐的配置,页面查看起来也
 * 不是很方便。一般程序员使用的也不多。所以写了这一
 * 段JavaScript代码提供给大家使用。算是一个简单的
 * JavaScript验证框架吧。使用起来很简单,配合下面几
 * 种标签使用,能实现大多数表单验证。
 * 1.验证输入框类,包括,text,textarea,password,hidden等
 * <textValidate 
 *		field="username" //对应待验证的输入框name属性
 *		lableText="用户名" //验证未通过时提示名称
 *		altText="用户名必须是数字,字母,下划线,长度在5-10之间" 
 *		//验证未通过时的提示文字,可不设置,不设置该属性时使用lableText属性提示
 *		isValidate="false" //是否验证
 *		min="5" //最小长度
 *		max="10" //最大长度
 *		dataType="account"> //数据类型,可选值:string(字符串),
 *			int(整数),email,account(只能是数字,字母,下划线),
 *			phone(国内电话号码),postcode(国内邮政编码),code(国内身份证号码),
 *			ip(电脑IP地址),正则表达式字符串
 * 2.验证单选和复选框是否必选,包括,radio,checkbox等
 * <radioValidate 
 *		field="sex" 
 *		altText=""
 *		lableText="性别" 
 *		isValidate="false">
 * 3.验证下拉框是否必选,包括,select等
 * <selectValidate 
 *		field="city" 
 *		altText=""
 *		lableText="所在城市" 
 *		isValidate="true" 
 *		noValue="-1"> //下拉框不选择时的默认值
 * Author:BluesLee  <br>
 * CreateDate:2009-8-7 <br>
 * Modifier:BluesLee  <br>
 * ModifyDate:2009-8-10 <br>
 * Version:1.0<br>
 * Copyright(c)2009 深蓝工作室<br>
 * All right reserved.<br>
 *
 */
 /**
  * 表单数据验证<br>
  * Author:BluesLee <br>
  * CreateDate:2009-8-7 <br>
  * Modifier:BluesLee <br>
  * ModifyDate:2009-8-10 <br>
  * Version:1.0<br>
  * 
  * @param frm,待验证的表单对象
  * @return 验证通过返回true,验证失败返回false
  */
function validate(frm){
	var textValidate=frm.getElementsByTagName("textValidate");
	for(var i=0;i<textValidate.length;i++){
		var isValidate=textValidate[i].getAttribute("isValidate");
		if(isValidate=="false") {
			continue;
		}
		var lable=textValidate[i].getAttribute("lableText");
		var min=textValidate[i].getAttribute("min");
		var max=textValidate[i].getAttribute("max");
		var datatype=textValidate[i].getAttribute("dataType");
		var alt=textValidate[i].getAttribute("altText");
		var field=document.getElementsByName(textValidate[i].getAttribute("field"))[0];
		if(min && min.length>0 && field.value.length<min){
			if(alt && alt.length>0){
				alert(alt);
			}else{
				alert(lable+"不能小于"+min+"位!");
			}
			if(field.select)field.select();
			field.focus();
			return false;
		}
		if(max && max.length>0 && field.value.replace(/[^x00-xff]/g,"aa").length>max){
			if(alt && alt.length>0){
				alert(alt);
			}else{
				alert(lable+"不能大于"+max+"位!");
			}
			if(field.select)field.select();
			field.focus();
			return false;
		}
		if(datatype && datatype.length>0){
			if(datatype=="int"){
				if(!/^[0-9]+$/g.test(field.value)){
					if(field.select)field.select();
					field.focus();
					if(alt && alt.length>0){
						alert(alt);
					}else{
						alert(lable+"只能输入整数!");
					}
					return false;
				}
			}else if(datatype=="email"){
				if(!/^([a-zA-Z0-9_\-\.\+]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/g.test(field.value)){
					if(field.select)field.select();
					field.focus();
					if(alt && alt.length>0){
						alert(alt);
					}else{
						alert("Email格式不正确!");
					}
					return false;
				}
			}else if(datatype=="account"){
				if(!/^[a-zA-Z0-9_]+$/g.test(field.value)){
					if(field.select)field.select();
					field.focus();
					if(alt && alt.length>0){
						alert(alt);
					}else{
						alert(lable+"只能是数字,字母和下划线!");
					}
					return false;
				}
			}else if(datatype=="phone"){
				if(!/^d{3}-d{8}|d{4}-d{7}$/g.test(field.value)){
					if(field.select)field.select();
					field.focus();
					if(alt && alt.length>0){
						alert(alt);
					}else{
						alert("电话号码格式不正确,正确格式:0511-4405222 或 021-87888822");
					}
					return false;
				}
			}else if(datatype=="postcode"){
				if(!/^[1-9]d{5}(?!d)$/g.test(field.value)){
					if(field.select)field.select();
					field.focus();
					if(alt && alt.length>0){
						alert(alt);
					}else{
						alert("邮政编码不正确");
					}
					return false;
				}
			}else if(datatype=="code"){
				if(!/^d{15}|d{18}$/g.test(field.value)){
					if(field.select)field.select();
					field.focus();
					if(alt && alt.length>0){
						alert(alt);
					}else{
						alert("身份证号码不正确");
					}
					return false;
				}
			}else if(datatype=="ip"){
				if(!/^(((1?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))\.){3}((1?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/g.test(field.value)){
					if(field.select)field.select();
					field.focus();
					if(alt && alt.length>0){
						alert(alt);
					}else{
						alert("IP地址格式不正确");
					}
					return false;
				}
			}else{
				if(!new RegExp(datatype,"g").test(field.value)){
					if(field.select)field.select();
					field.focus();
					if(alt && alt.length>0){
						alert(alt);
					}else{
						alert(lable+"输入格式不正确!");
					}
					return false;
				}
			}
		}
	}
	var radioValidate=frm.getElementsByTagName("radioValidate");
	for(var i=0;i<radioValidate.length;i++){
		var isValidate=radioValidate[i].getAttribute("isValidate");
		if(isValidate=="false") {
			continue;
		}
		var lable=radioValidate[i].getAttribute("lableText");
		var alt=textValidate[i].getAttribute("altText");
		var field=document.getElementsByName(radioValidate[i].getAttribute("field"));
		var flag=true;
		for(var j=0;j<field.length;j++){
			if(field[j].checked){
				flag=false;
				break;
			}
		}
		if(flag){
			if(alt && alt.length>0){
				alert(alt);
			}else{
				alert(lable+"为必选项!");
			}
			return false;
		}
	}
	var selectValidate=frm.getElementsByTagName("selectValidate");
	for(var i=0;i<selectValidate.length;i++){
		var isValidate=selectValidate[i].getAttribute("isValidate");
		if(isValidate=="false") {
			continue;
		}
		var lable=selectValidate[i].getAttribute("lableText");
		var alt=textValidate[i].getAttribute("altText");
		var noValue=selectValidate[i].getAttribute("noValue");
		var field=document.getElementsByName(selectValidate[i].getAttribute("field"))[0];
		if(field.value==noValue){
			if(alt && alt.length>0){
				alert(alt);
			}else{
				alert(lable+"为必选项!");
			}
			return false;
		}
	}
	return true;
}

 2.test.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  <script language="JavaScript" src="validate.js"></script>
 </HEAD>

 <BODY>
  <form onsubmit="return validate(this);">
	<textValidate field="username" lableText="用户名" isValidate="false" min="5" max="10" dataType="account">
	用户名
	<input name="username" type="text"><br>
	<textValidate field="password" lableText="密码" isValidate="false" min="6" dataType="^[a-zA-Z0-9_]+$">
	密码
	<input name="password" type="password"><br>
	<textValidate field="email" lableText="Email" isValidate="false" dataType="email">
	Email
	<input name="email" type="text"><br>
	<radioValidate field="sex" lableText="性别" isValidate="true">
	性别
	<input name="sex" type="radio">男
	<input name="sex" type="radio">女<br>
	<radioValidate field="hunyin" lableText="婚姻状况" isValidate="true">
	婚姻状况
	<input name="hunyin" type="radio">已婚
	<input name="hunyin" type="radio">未婚<br>
	兴趣爱好
	<radioValidate field="love" lableText="兴趣爱好" isValidate="true">
	<input name="love" type="checkbox">篮球
	<input name="love" type="checkbox">足球<br>
	所在城市
	<selectValidate field="city" lableText="所在城市" isValidate="true" noValue="-1">
	<select name="city">
		<option value="-1">请选择...</option>
		<option value="上海">上海</option>
		<option value="北京">北京</option>
		<option value="西安">西安</option>
	</select>
	<input type="submit">
</form>
 </BODY>
</HTML>

 

0
0
分享到:
评论

相关推荐

    最简单的表单验证框架发布

    "Hello, World"是编程初学者常用的入门示例,通常包含最基本的用法,因此我们可以期待在`helloworld.html`文件中找到一个简单的表单验证应用实例。 标签“Java”可能表明这个框架与Java有关,尽管表单验证通常在...

    javascript简单验证框架

    "javascript简单验证框架"就是这样一个工具,它简化了JavaScript表单验证的过程。 这个框架的核心是`CheckForm.js`文件,这通常是一个包含了各种验证规则和函数的JavaScript库。开发者可以通过调用这些预定义的方法...

    formvalidator 表单验证框架

    formvalidator 是一个强大的前端表单验证框架,专为开发者提供高效、灵活的表单数据验证解决方案。这个框架允许开发者在用户提交表单前检查输入的数据,确保数据的完整性和准确性,从而提高用户体验并减少服务器端的...

    jsvalidation 强大而灵活的表单客户端验证框架

    如首页所说,JSValidation是客户端表单验证框架,用在BS系统中,或者简单的网页系统中。表单验证在这些开发中很常见:新用户注册,需要校验某些字段;用户登陆,需要校验;等等。在这之前,页面开发者...

    JS客户端表单验证框架

    传统的验证方式往往需要编写大量的JavaScript代码,而这套框架通过提供配置文件和特定的标签使用,使得表单验证变得更加简单易行。 在使用**JS客户端表单验证框架**时,开发者不再需要手动编写复杂的JavaScript函数...

    简单且强大的js表单验证框架

    1. **JavaScript表单验证**:在客户端进行表单验证可以提高用户体验,因为数据在提交服务器前就能得到即时反馈。JavaScript允许开发者添加自定义验证逻辑,例如检查邮箱格式、手机号码合法性等。 2. **轻量级框架**...

    表单验证框架

    本篇文章将探讨一种名为"表单验证框架"的技术,这种框架通常用于自动化和简化客户端及服务器端的表单验证过程。 在传统的Web开发中,表单验证往往需要开发者手动编写JavaScript代码来处理前端验证,同时还需要在...

    表单验证框架验证

    本文将详细探讨三种常见的表单验证方法:JavaScript验证、框架验证以及正则表达式验证。 首先,我们来了解**JavaScript验证**。JavaScript是一种客户端脚本语言,可在用户的浏览器上运行,无需服务器交互即可进行...

    详细讲解—表单验证框架的实现

    本部分将深入讲解如何在B/S架构的应用程序中实施一个简单的表单验证框架,以登录表单为例。 首先,登录表单通常由HTML构成,如示例中的`login.jsp`文件所示。这段代码中包含了HTML的基本结构,包括定义文档类型(`...

    JSP客户端表单验证框架JSValidation

    JSValidation是一款基于JavaScript的轻量级表单验证框架,主要用于在JSP(JavaServer Pages)应用中实现客户端的表单数据验证。它提供了一种简单、高效的手段来确保用户在提交表单之前输入的数据符合预设的规则,...

    基于JavaScript的表单验证.zip

    总的来说,"基于JavaScript的表单验证.zip"这个资源为我们提供了一个学习和实践如何使用HTML、CSS、JavaScript和正则表达式进行客户端表单验证的实例。通过理解和掌握这些技术,开发者可以构建更加健壮、用户体验...

    sui表单验证框架

    sui表单验证框架是一款强大的JavaScript开发工具,专用于实现高效、灵活的表单验证功能。在Web应用中,表单验证是不可或缺的一部分,它确保用户输入的数据符合预设的规则,从而提高数据质量和用户体验。sui框架凭借...

    jquery表单验证框架:jquery.validate.zip

    jQuery是一个广泛使用的JavaScript库,而jQuery.validate则是jQuery的一个强大插件,专门用于实现客户端的表单验证。本篇文章将详细介绍jQuery.validate框架及其核心功能。 一、jQuery.validate简介 jQuery....

    jQuery表单验证框架

    jQuery Validate 是一款广泛使用的JavaScript库,专门用于实现表单验证。这个框架极大地简化了在网页上创建复杂且功能强大的表单验证的过程。下面我们将详细探讨jQuery Validate框架的主要特性和使用方法。 首先,...

    javascript验证框架

    这个框架主要应用于表单验证,包括但不限于电子邮件地址、手机号码、密码强度等各类输入字段的检查。 在JavaScript验证框架中,有以下几个重要的知识点: 1. **验证规则**:验证框架通常定义了一系列内置的验证...

    JavaScript程序设计——页面设置与表单验证实验报告.docx

    实验报告的标题“JavaScript程序设计——页面设置与表单验证实验报告.docx”涉及的核心是JavaScript编程中的两个关键领域:页面设置和表单验证。在Web开发中,JavaScript是一种常用的客户端脚本语言,用于增强用户的...

    Ajax表单验证框架

    在网站开发中,Ajax(Asynchronous JavaScript and XML)表单验证框架是提高用户体验的重要工具。它允许我们在不刷新整个页面的情况下进行数据验证,为用户提供实时反馈,极大地提升了交互性。本教程将深入探讨Ajax...

    EasyValidator1.0---发布一个Javascript校验框架

    总结来说,EasyValidator 1.0 是一个强大的JavaScript验证工具,它简化了前端验证的实现,提高了代码质量,并且提供了丰富的验证规则和灵活的错误处理机制。对于任何需要进行前端数据验证的项目,都是一个值得考虑的...

Global site tag (gtag.js) - Google Analytics