-
- 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;
- }
- <!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="">
- <mce:script language="JavaScript" src="validate.js" mce_src="validate.js"></mce: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>
简单的js表单验证框架,布布扣,bubuko.com
简单的js表单验证框架
原文:http://www.cnblogs.com/siashan/p/3924200.html