表单验证 对象写法

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>表单验证提示效果</title>
<style type="text/css">
body{ color:#666666; font-size:12px}
h1{ font-size:20px;}
input{ border:#999999 1px solid; background-color:#FFFFEE}
.button2{ background-color:#FF9900; border-bottom:#E34A00 2px solid;border-right:#E34A00 2px solid; border-top:#FFB693 2px solid;border-left:#FFB693 2px solid; color:#FFFFFF; font-weight:bold}
dl {
font:normal 12px/15px Arial;
  position: relative;
    width: 350px;
}
dt {
    clear: both;
    float:left;
    width: 80px;
    padding: 4px 0 2px 0;
    text-align: left;
}
dd {
    float: left;
    width: 200px;
    margin: 0 0 8px 0;
    padding-left: 6px;
}

.hint {
display: none;
    position: absolute;
    right: -160px;
    width: 200px;
    margin-top: -4px;
    border: 1px solid #c93;
    padding: 10px 12px;
    background: #ffc url(/jscss/demoimg/200911/pointer.gif) no-repeat -10px 5px;
}

.hint .hint-pointer {
    position: absolute;
    left: -10px;
    top: 5px;
    width: 10px;
    height: 19px;
    background: url(/jscss/demoimg/200911/pointer.gif) left top no-repeat;
}
</style>
<script language="JavaScript" type="text/javascript">
var FormValid = function(frm) {
    this.frm = frm;
    this.errMsg = new Array();
 this.errName = new Array();
  
    this.required = function(inputObj) {
        if (typeof(inputObj) == "undefined" || inputObj.value.trim() == "") {
            return false;
        }
  return true;
    }
   
    this.eqaul = function(inputObj, formElements) {
  var fstObj = inputObj;
  var sndObj = formElements[inputObj.getAttribute('eqaulName')];
  
        if (fstObj != null && sndObj != null) {
            if (fstObj.value != sndObj.value) {
               return false;
            }
        }
  return true;
    }

    this.gt = function(inputObj, formElements) {
  var fstObj = inputObj;
  var sndObj = formElements[inputObj.getAttribute('eqaulName')];
  
        if (fstObj != null && sndObj != null && fstObj.value.trim()!='' && sndObj.value.trim()!='') {
            if (fstObj.value <= sndObj.value) {
                 return false;
            }
        }
  return true;
    }

 this.compare = function(inputObj, formElements) {
  var fstObj = inputObj;
  var sndObj = formElements[inputObj.getAttribute('objectName')];
        if (fstObj != null && sndObj != null && fstObj.value.trim()!='' && sndObj.value.trim()!='') {
            if (!eval('fstObj.value' + inputObj.getAttribute('operate') + 'sndObj.value')) {
                 return false;
            }
        }
  return true;
 }
 
 this.limit = function (inputObj) {
  var len = inputObj.value.length;
  if (len) {
   var minv = inputObj.getAttribute('min');
   var maxv = inputObj.getAttribute('max');
   minv = minv || 0;
   maxv = maxv || Number.MAX_VALUE;
   return minv <= len && len <= maxv;
  }
  return true;
 }
 
 this.range = function (inputObj) {
  var val = parseInt(inputObj.value);
  if (inputObj.value) {
   var minv = inputObj.getAttribute('min');
   var maxv = inputObj.getAttribute('max');
   minv = minv || 0;
   maxv = maxv || Number.MAX_VALUE;
  
   return minv <= val && val <= maxv;
  }
  return true;
 }
 
 this.requireChecked = function (inputObj) {
  var minv = inputObj.getAttribute('min');
  var maxv = inputObj.getAttribute('max');
  minv = minv || 1;
  maxv = maxv || Number.MAX_VALUE;
 
  var checked = 0;
  var groups = document.getElementsByName(inputObj.name);
  
  for(var i=0;i<groups.length;i++) {
   if(groups[i].checked) checked++;
   
  }
  return minv <= checked && checked <= maxv;
 }
 
 this.filter = function (inputObj) {
  var value = inputObj.value;
  var allow = inputObj.getAttribute('allow');
  if (value.trim()) {
   return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, allow.split(/\s*,\s*/).join("|")), "gi").test(value);
  }
  return true;
 }
 
 this.isNo = function (inputObj) {
  var value = inputObj.value;
  var noValue = inputObj.getAttribute('noValue');
  return value!=noValue;
 }
    this.checkReg = function(inputObj, reg, msg) {
        inputObj.value = inputObj.value.trim();

        if (inputObj.value == '') {
            return;
        } else {
            if (!reg.test(inputObj.value)) {
    this.addErrorMsg(inputObj.name,msg);
   }
        }
    }

    this.passed = function() {
        if (this.errMsg.length > 0) {
            FormValid.showError(this.errMsg,this.errName);
            frt = document.getElementsByName(this.errName[0])[0];
   
   if (frt.type!='radio' && frt.type!='checkbox') {
    frt.focus();
   }
            return false;
        } else {
          return true;
        }
    }

    this.addErrorMsg = function(name,str) {
        this.errMsg.push(str);
  this.errName.push(name);
    }
 
    this.addAllName = function(name) {
  FormValid.allName.push(name);
    }
 
}
FormValid.allName = new Array();
FormValid.showError = function(errMsg) {
 var msg = "";
 for (i = 0; i < errMsg.length; i++) {
  msg += "- " + errMsg[i] + "\n";
 }

 alert(msg);
}
function validator(frm) {
 var formElements = frm.elements;
 var fv = new FormValid(frm);
 
 for (var i=0; i<formElements.length;i++) {
  var validType = formElements[i].getAttribute('valid');
  var errorMsg = formElements[i].getAttribute('errmsg');
  if (validType==null) continue;
  fv.addAllName(formElements[i].name);

  var vts = validType.split('|');
  var ems = errorMsg.split('|');
  for (var j=0; j<vts.length; j++) {
   var curValidType = vts[j];
   var curErrorMsg = ems[j];
   
   switch (curValidType) {
   case 'isNumber':
   case 'isEmail':
   case 'isPhone':
   case 'isMobile':
   case 'isIdCard':
   case 'isMoney':
   case 'isZip':
   case 'isQQ':
   case 'isInt':
   case 'isEnglish':
   case 'isChinese':
   case 'isUrl':
   case 'isDate':
   case 'isTime':
    fv.checkReg(formElements[i],RegExps[curValidType],curErrorMsg);
    break;
   case 'regexp':
    fv.checkReg(formElements[i],new RegExp(formElements[i].getAttribute('regexp'),"g"),curErrorMsg);
    break;
   case 'custom':
    if (!eval(formElements[i].getAttribute('custom')+'(formElements[i],formElements)')) {
     fv.addErrorMsg(formElements[i].name,curErrorMsg);
    }
    break;
   default :
    if (!eval('fv.'+curValidType+'(formElements[i],formElements)')) {
     fv.addErrorMsg(formElements[i].name,curErrorMsg);
    }
    break;
   }
  }
 }
 return fv.passed();
}
String.prototype.trim = function() {
 return this.replace(/^\s*|\s*$/g, "");
}
var RegExps = function(){};
RegExps.isNumber = /^[-\+]?\d+(\.\d+)?$/;
RegExps.isEmail = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;
RegExps.isPhone = /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/;
RegExps.isMobile = /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/;
RegExps.isIdCard = /(^\d{15}$)|(^\d{17}[0-9Xx]$)/;
RegExps.isMoney = /^\d+(\.\d+)?$/;
RegExps.isZip = /^[1-9]\d{5}$/;
RegExps.isQQ = /^[1-9]\d{4,10}$/;
RegExps.isInt = /^[-\+]?\d+$/;
RegExps.isEnglish = /^[A-Za-z]+$/;
RegExps.isChinese =  /^[\u0391-\uFFE5]+$/;
RegExps.isUrl = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
RegExps.isDate = /^\d{4}-\d{1,2}-\d{1,2}$/;
RegExps.isTime = /^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}$/;
</script>
<script type="text/javascript">
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function prepareInputsForHints() {
 var inputs = document.getElementsByTagName("input");
 for (var i=0; i<inputs.length; i++){
  if (inputs[i].parentNode.getElementsByTagName("span")[0]) {
   inputs[i].onfocus = function () {
    this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
   }
   inputs[i].onblur = function () {
    this.parentNode.getElementsByTagName("span")[0].style.display = "none";
   }
  }
 }
 var selects = document.getElementsByTagName("select");
 for (var k=0; k<selects.length; k++){
  if (selects[k].parentNode.getElementsByTagName("span")[0]) {
   selects[k].onfocus = function () {
    this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
   }
   selects[k].onblur = function () {
    this.parentNode.getElementsByTagName("span")[0].style.display = "none";
   }
  }
 }
}
addLoadEvent(prepareInputsForHints);
</script>
<script type="text/javascript">
FormValid.showError = function(errMsg,errName) {
 for (key in FormValid.allName) {
  document.getElementById('errMsg_'+FormValid.allName[key]).innerHTML = '';
 }
 for (key in errMsg) {
  document.getElementById('errMsg_'+errName[key]).innerHTML = errMsg[key];
 }
}
</script>

</head>
<body>
<h1>表单验证提示效果</h1>
<form action="" method="post" οnsubmit="return validator(this)">
<dl>
 <dt><label for="name">帐号:</label></dt>
 <dd><input name="name" id="name"type="text" valid="required" errmsg="用户名不能为空!" />
 <span class="hint" id="errMsg_name">注册帐号(只支持数字和字母,如:love,love520)<span class="hint-pointer"></span></span> </dd>
 
 <dt><label for="password">密码:</label></dt>
 <dd><input name="password" id="password" type="password" valid="required" errmsg="密码不能为空!" />
 <span class="hint"  id="errMsg_password">请输入密码,请最少输入最少6位最多12位密码<span class="hint-pointer">    </span></span> </dd>
 
 <dt><label for="password2">确认密码:</label></dt>
 <dd>
 <input name="password2" id="password2" type="text" type="password" valid="eqaul" eqaulName="password" errmsg="两次密码不同!" />
 <span class="hint" id="errMsg_password2">请再输入一次上面的密码<span class="hint-pointer"></span></span> </dd>
 
 <dt><label for="email">邮箱:</label></dt>
 <dd><input name="email" id="email"type="text" valid="required|isEmail" errmsg="Email不能为空|Email格式不对!"/>
 <span class="hint" id="errMsg_email">请输入邮箱(Email),推荐使用网易邮箱@163.com<span class="hint-pointer"></span></span> </dd>
 
 <dt><label for="year">生日:</label></dt>
 <dd><select id="year" name="year">
   <option value="1983">1983</option>
   <option value="1984">1984</option>
   <option value="1985">1985</option>
  </select>年<select name="m" id="m">
       <option value="5">5</option>
       <option value="6">6</option>
       <option value="7">7</option>
       <option value="12">12</option>
        </select>月<select name="d" id="d">
       <option value="5">5</option>
       <option value="6">6</option>
       <option value="7">7</option>
       <option value="12">12</option>
        </select>日<span class="hint">请输入你的生日<span class="hint-pointer"></span></span>     
 </dd>
 <dt><label for="qq">QQ/MSN:</label></dt>
 <dd><input name="qq" id="qq" type="text" valid="required" errmsg="没有填写QQ或MSN"/>
 <span class="hint" id="errMsg_qq">请输入你的QQ或MSN号码<span class="hint-pointer"></span></span> </dd>
 <dt><label for="tel">电话:</label></dt>
 <dd><input name="tel" id="tel" type="text" valid="required|isMobile" errmsg="手机不能为空|手机格式不对!" />
 <span class="hint" id="errMsg_tel">请输入你的电话<span class="hint-pointer"></span></span> </dd>
 <dt class="button"></dt>
 <dd class="button"><input type="submit" name="Submit" value=" 提 交 " class="button2"/></dd>
</dl>
</form>
 </p>
</body>
</html>

 

简介:完全通过html不需要写JS验证程序就可以实现表单验证功能,可支持一个表单元件多条件验证, 同一页面多表单可同时使用,和服务端程序无关系,完全客户端方式。 Demo1 基本使用方法 Demo2 自定义错误信息显示方式1 Demo3 自定义错误信息显示方式2/FV_onBlur.js插件演示 Demo4 所有判断规则 Demo5 自定义正则规则 Demo6 自定义函数规则 Demo7 自定义验证成功后处理方式 Demo8 结合jquery实现AJAX自定义验证 特性: 使用方法:在要验证的表单(form)中加上 onsubmit="return validator(this)" 在要验证的表单元件中设置元件,valid(验证规则),errmsg(提示消息),多个验证使用|作为分隔! 验证规则参数: required 必填 eqaul 和另一元件对比值是否相同,对比的元件名在元件加上属性eqaulName gt 和另一元件对比值是否大于另一元件值,对比的元件名在元件加上属性eqaulName isNumber 是否为数字 isInt 是否为整形 isTime 是否为时间格式 isDate 是否为日期格式 isEmail 必须是Email格式 isPhone 是否为电话号码 isMobile 是否为手机号码 isTelephone 是否为电话或手机号码 isIdCard 是否为身份证号码 isMoney 是否为货币值 isZip 是否是邮件编码 isQQ 是否是QQ isEnglish 是否是english isChinese 是否是中文 isUrl 是否是url compare 对比两个值 limit 长度限制 range 值范围限制 requireChecked 单选、复选框必须选择 filter 扩展名限制 isNo 值不等于 regexp 自定义正则判断 custom 自定义函数判断 更新历史: 1.0 disabled的元件不进行验证 比较大小判断的改正 增加了isTelephone决断,即电话验证可包括手机和市话 url规则支持https 增加了元件onblur即时提示错误信息的插件.FV_onBlur.js 0.6 手机号码添加了15开头的号码支持 。 0.5 修复了当元件名称出现数组形式[],在IE下出错问题。 0.4 修改了当errmsg不存在时出现的问题 修改了如果一个页面存在多个表单的自定义错误显示方式问题 添加了自定义验证成功后处理方式 0.3 加入十几种验证规则 加入自定义正则判断 加入自定义函数判断 加入将焦点移到第一个错误元件 0.2 加入自定义错误显示方式
vant2 表单是基于 Vue.js 和 VantUI 组件库的表单组件,用于快速构建各类表单。下面给出一种常用的 vant2 表单的详细写法。 首先,我们需要在项目中引入 vant2 表单组件,具体的引入方式可以参考 vant2 官方文档的指引。 接着,在 Vue 组件中使用 vant2 表单组件,我们需要在 data 中定义表单的数据模型,以及相应的验证规则。例如,可以定义一个名为 formData 的对象来存储表单数据,还可以定义一个名为 rules 的对象来存储验证规则,具体根据需求定义各个字段的数据类型、是否必填、最大长度等。 在模板中,我们可以使用 vant2 表单组件的相关标签来构建表单。常用的组件包括 `van-field` 输入框、`van-switch` 开关、`van-radio` 单选框、`van-checkbox` 复选框等。根据需求逐个添加相应的组件,并根据 data 中定义的数据模型和验证规则,绑定组件的 v-model 和 :rules 属性,实现数据的双向绑定和验证功能。 此外,vant2 表单还提供了一些常用的操作按钮,如提交按钮、重置按钮等。我们可以使用 `van-button` 组件来展示这些操作按钮,并通过相应的事件处理函数来实现提交、重置等功能。 最后,在组件中定义相应的方法来处理表单的提交、重置等操作。例如,可以定义一个名为 submitForm 的方法,通过表单验证后执行提交操作,并在需要时可以在这个方法中调用后端接口进行后续处理。 以上就是一种常用的 vant2 表单的详细写法。当然,根据实际需求,我们还可以通过 vant2 表单组件提供的更多属性和事件来进一步定制化表单的样式和功能,以满足具体的业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值