`
JamesQian
  • 浏览: 55737 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript前端form验证(不用正则表达式)

阅读更多
  1. 注:需要配套的js跟html文件   
  2. 困难的地方是如何维持,class的累加! invalid这个class是累加在固有class上的,中间用空格隔开!   
  3. 本文参考《JavaScript & Ajax》文中对此的校验函数之前嵌套太多,看了头大。故我将其拆分成独立的函数   
  4. case条件处需要优化,还有其他地方也需要修改!   
  5. 纪念下这是我第一次发真正意义的开发相关的文章!

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>Car Picker</title>
	<script language="Javascript" type="text/javascript" src="validate.js">
	</script>	
	<link rel="stylesheet" href="validate.css" />
</head>
<body>
<h2 align="center">Car Picker</h2>
<form action="#">
	<p><label for="emailAddr">Email Address:
		<input id="emailAddr" type="text" size="30" class="reqd email" />
	</label></p>
	<p><label for="color">Colors:
		<select id="color" class="reqd">
			<option value="" selected="selected">Choose a color</option>
			<option value="Red">Red</option>
			<option value="Green">Green</option>
			<option value="Blue">Blue</option>
		</select>
	</label></p>
	<p>Options:
		<label for="sunroof"><input type="checkbox" name="checkes" id="sunroof" value="checkCar" class="checkes" />Sunroof (Two door only)</label>
		<label for="pWindows"><input type="checkbox" name="checkes" id="pWindows" value="checkCar" class="checkes" />Power Windows</label>
	</p>
	<p><label for="radios">Doors:&nbsp;&nbsp;
            <input type="radio" id="twoDoor" name="radios" value="twoDoor" class="radios" />Two
            <input type="radio" id="fourDoor" name="radios" value="fourDoor" class="radios" />Four
	    </label></p>
    <!--
    <p><label for="zip">Enter your Zip code or pick the dealer nearest you:<br />
		Zip: <input id="zip" type="text" size="5" maxlength="5" class="isZip dealerList reqd " />
		<select id="dealerList" size="4" class="zip">
			<option value="California--Lemon Grove">California--Lemon Grove</option>
			<option value="California--Lomita">California--Lomita</option>
			<option value="California--Long Beach">California--Long Beach</option>
			<option value="California--Los Alamitos">California--Los Alamitos</option>
			<option value="California--Los Angeles">California--Los Angeles</option>
		</select>
	</label></p>
	-->
	<p><input type="submit" value="Submit" />&nbsp;<input type="reset" /></p>
</form>
</body>
</html>

 

body {
		color:#000;
		background-color:#fff;
}
input.invalid{
		background-color:#ff9;
		border:2px red inset;
}

span.innerHtml{
   border:1px blue inset; 
}

label.invalid{
		color:#f00;
}
 
window.onload = initForm;

String.prototype.trim = function(){
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

function initForm(){
    var formsArr = document.forms;
    for(var i=0;i<formsArr.length;i++){
        var formF = formsArr[i];
        formF.onsubmit = function(){preSubmitForm(formF)};
    }
    document.getElementById("sunroof").onclick = doorSet;
}

function preSubmitForm(formF){
    var formAllTag = formF.getElementsByTagName("*");
    for(var i=0;i<formAllTag.length;i++){
        var formTag = formAllTag[i];
        if(!validate(formTag)){
            formTag.focus();
            if(formTag.nodeName=="INPUT"){
                formTag.select();
            }
            return false;
        }
    }
    return true;
}

function validate(formTag){
    var tagClassPrim = formTag.className;
    var classPrim = tagClassPrim.split(" ");
    var classOut = "";
    if(null!=classPrim && classPrim.length>0){
        for(var i=0;i<classPrim.length;i++){
            classOut += convertClass(formTag,classPrim[i]);
        }
        formTag.className = classOut;
    }

    if(classOut.indexOf("invalid")>-1){
        strongLabel(formTag.parentNode);
        return false;
    }
    return true;
}

function convertClass(formTag,classSingle){
    var newClass = "";
    switch(classSingle){
        case "":
        case "invalid":
             break;
        case "reqd":
             if(formTag.value.trim()==""){
                 newClass = " invalid "+classSingle;
             }else{
                 newClass = " "+classSingle;
             }
             break;
        case "passwd1":
             if(!checkPasswd(formTag,classSingle)){
                newClass = " invalid "+classSingle;
             }else{
                 newClass = " "+classSingle;
             }
             break;
        case "checkes":     
        case "radios":
             if(!checkCar(classSingle)){
                newClass = " invalid "+classSingle;
             }else{
                newClass = " "+classSingle;
             }
             break;
        case "zip":
             if(!checkZip(formTag,classSingle)){
                newClass = " invalid "+classSingle;
             }else{
                newClass = " "+classSingle;  
             }
        default:
             newClass = " "+classSingle;
    }
    return newClass;
}

function checkPasswd(forTag,classSingle){
    var passwd1 = document.getElementById(classSingle);

    var passErrObj = document.getElementById("passErrorHint");
    if(passwd1.value!=forTag.value){

        passErrObj.className = "innerHtml";
        passErrObj.innerHTML = "密码前后不一致";
        return false;
    }
    passErrObj.className="";
    passErrObj.innerHTML="";
    return true;
}

function strongLabel(labelTag){
    if(labelTag.nodeName=="LABEL"){
        labelTag.className += " invalid "; 
    }
}

function checkCar(classSingle){
        var checkes = document.getElementsByName(classSingle);
		if(null==checkes || null==checkes.length){
			return false;
		}else{
			for(var i=0;i<checkes.length;i++){
				if(checkes[i].checked){
					return true;
				}
			}
			return false;
		}
}

function checkZip(formTag){
    var zipStr = formTag.value;
    for(var i=0;i<zipStr.length;i++){
        var intCode = parseInt(zipStr.charAt(i));
        if(intCode==NaN){
            return false;
        }
        if(intCode<0||intCode>9){
            return false;
        }
    }
    return true;
}

function  doorSet(){
    if(this.checked){
       document.getElementById("twoDoor").checked = true;
    }else{
       document.getElementById("twoDoor").checked = false; 
    }
}
 
分享到:
评论

相关推荐

    正则表达式

    我们已经发现了,在正则表达式中所有的字母字符和数字都是按照字面意思与自身相匹配的.JavaScript的正则表达式还通过以反斜杠(\)开头的转义序列支持某些非 字母字符.例如,序列 "\n" 在字符串中匹配的是一个直接量换...

    邮箱验证(javascript中的正则表达式)

    ### 邮箱验证(Javascript中的正则表达式) 在Web开发中,表单验证是一项基本而重要的功能,它能够确保用户输入的数据符合预期的格式,从而提高用户体验并减少服务器端的压力。其中,电子邮件地址验证尤为关键,...

    js验证大全(正则表达式)

    以下是一些常见的JavaScript表单验证方法和正则表达式的应用示例: 1. **长度限制**:通过`length`属性可以检查输入的字符数,例如限制输入不能超过50个字符。如: ```javascript if (document.a.b.value.length &gt; ...

    JS实现表单输入正则表达式验证功能源码.zip

    本压缩包中的"JS实现表单输入正则表达式验证功能源码.zip"提供了使用JavaScript进行表单验证的方法,主要涉及以下几个核心知识点: 1. **正则表达式**:正则表达式(Regular Expression)是一种强大的文本处理工具...

    js正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码.docx

    通过上述分析,我们可以看出JavaScript中的正则表达式是非常强大且灵活的工具,能够帮助开发者轻松地控制和验证用户的输入数据。合理运用这些正则表达式,可以大大提高前端表单的用户体验和数据安全性。

    JS 表单验证的15个正则表达式

    通过这些正则表达式,开发者可以在前端实现快速有效的表单验证,防止无效数据提交到服务器,提高用户体验并减轻后端处理压力。在实际应用中,应根据具体需求对这些正则进行适当的调整和优化。在开发过程中,可以利用...

    用JavaScrip正则表达式验证form表单的方法

    JavaScript作为前端开发的核心技术之一,其提供的正则表达式功能非常适合用来执行这类验证任务。 正则表达式是一种定义搜索模式的字符串,它可以用来匹配、查找和替换文本中的字符组合。在JavaScript中,正则表达式...

    jquery正则表达式验证(手机号、身份证号、中文名称)

    JQuery正则表达式验证是一种非常实用的前端验证技术,它能够快速有效地对用户输入的内容进行格式校验。本文介绍了如何利用JQuery结合正则表达式来实现手机号、身份证号码和中文名称的验证。通过具体的应用实例,展示...

    js校验纯数字

    在JavaScript(JS)中,...总之,这个例子展示了如何利用JavaScript和正则表达式来实现基本的纯数字校验,是前端开发中常见的一种验证技术。对于初学者来说,理解并熟练运用正则表达式进行数据验证是非常重要的技能。

    js正则表达式表单验证代码

    JavaScript正则表达式在表单验证中的应用是前端开发中不可或缺的一部分。正则表达式(Regular Expression)是一种强大的文本处理工具,它能用于检查一个字符串是否符合某种模式,或者进行字符串的查找、替换等操作。...

    javascript 手机号码正则表达式验证函数 <font color=red>原创</font>

    在JavaScript中,正则表达式是进行此类验证的主要手段之一。下面详细介绍与手机号码相关的正则表达式验证规则和相关知识点。 首先,基础的手机号码验证规则是以数字“1”开头,然后跟随一个由“3|4|5|8”这些数字中...

    JS 正则验证表单

    在本文中,我们将深入探讨JavaScript中的正则表达式及其在表单验证中的应用。 正则表达式(Regular Expression)是一种模式匹配工具,用于检查字符串是否符合特定的模式或格式。在JavaScript中,正则表达式常用于...

    javascript中使用正则表达式进行字符串验证示例

    在JavaScript中,正则表达式是一种强大的工具,用于匹配、查找、替换字符串中的模式。在本示例中,我们利用正则表达式进行用户输入的验证,确保数据的有效性和安全性。以下是对标题和描述中涉及知识点的详细说明: ...

    正则表达式初运用之认证界面的实现代码

    总结而言,正则表达式在前端开发中扮演着重要的角色,特别是在用户界面的表单验证方面。通过正则表达式,开发者可以确保用户输入的信息符合预期格式,从而提高数据的准确性和安全性。本篇文档通过具体的代码示例,...

    使用FormValidation进行表单验证

    `FormValidation`是一个强大的JavaScript库,它结合了`jQuery`和`Bootstrap`框架,使得表单验证变得更加简单易用。本文将详细介绍如何使用`FormValidation`进行表单验证,并探讨与`jQuery`和`Bootstrap`的集成。 ...

    正则表达式与HTML5新元素

    尽管HTML5简化了前端验证流程,但在服务器端进行数据校验时,正则表达式同样不可或缺。 最后,ProcessOn作为一个在线协作绘图平台,能够为用户提供方便快捷的绘图工具,帮助用户在线绘制思维导图、流程图等图形。...

    通过正则表达式实现表单验证是否为中文

    总结起来,通过正则表达式实现表单验证是否为中文的关键在于正确构造匹配中文字符的正则表达式,并结合JavaScript的`test()`方法进行判断。这种方法不仅适用于简单的输入验证,还可以扩展到更复杂的场景,如多字段...

    基于JavaScript的表单验证.zip

    本资源"基于JavaScript的表单验证.zip"提供了一种使用JavaScript进行表单验证的方法,涵盖了HTML、CSS、JavaScript以及正则表达式等多个关键技术领域。 首先,HTML(超文本标记语言)是构建网页的基础,用于定义...

Global site tag (gtag.js) - Google Analytics