表單驗證:
1.非空驗證
判斷非空最好不要用trim()方法,不相容,推薦使用正規表達式。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>送出表單</title>
<script type="text/javascript">
function trim (txt) {
var afterText = txt.replace(/^\s*/,'').replace(/\s*$/,'');
return afterText;
}
function login () {
var uname = document.getElementById("username").value;
var div1 = document.getElementById("div1");
var form1 = document.getElementById("form1");
if(trim(uname)==""){
//提示非空
div1.innerHTML = "<font color='red'>使用者名不能為空</font>";
}else{
//送出表單
form1.submit();
}
}
window.onload = function(){
var btn1 = document.getElementById("btn1");
btn1.onclick = login;
}
</script>
</head>
<body>
<h2>使用者登入</h2>
<div id="div1">
</div>
<form id="form1" action="登入成功.html" method="post"><!--get不會出現500内部伺服器錯誤-->
使用者名<input type="text" name="username" id="username"/>
<input type="button" name="btn1" id="btn1" value="登入" />
</form>
</body>
</html>
二、驗證是否是數字
示例:
if(trim(uname)==""){
//提示非空
div1.innerHTML = "<font color='red'>商品數量不能為空</font>";
}else if(isNaN(trim(uname))){
div1.innerHTML = "<font color='red'>商品數量必須為整數</font>";
}else{
//送出表單
form1.submit();
}
三、驗證郵箱
示例:
function isMail (email) {
var regExp = /^\d{5,10}@\w+\.(com|net|org)$/;
var flag = regExp.test(email);
return flag;
}
四、驗證手機号
示例:
function isPhone (phone) {
var regExp = /^([-]{}|[-]{}|[-]{})\d{}$/;
var flag = regExp.test(phone);
return flag;
}
綜合起來,使用正規表達式實作使用者注冊頁面:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#form1{
/*font-family: "楷體";*/
font-family: "微軟雅黑";
font-style: normal;
}
label {
width: em;
display: inline-block;
}
#div1{
color: red;
}
span.error {
color: red;
background: url(imgs/unchecked.gif) no-repeat px center;
padding-left: px;
}
span.success {
background: url(imgs/checked.gif) no-repeat px center;
padding-left: px;
}
#username[value],#pwd[value],#phone[value],#mail[value],#pwd2[value]{
opacity: ;
}
</style>
<script src="../jsJava庫/hashMap.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var regBtn;
var uname ;
// var errMsg = "<img src='imgs/unchecked.gif'/>使用者名不正确";
// var successMsg = "<img src='imgs/checked.gif'/>";
var form1;
var span1;
var pwd;
var span2;
var mail;
var span3;
var phone;
var span4;
var pwd2;
var span5;
var map1 = new HashMap();
var beijing = ['海澱區','大興區','朝陽區','豐台區'];
var shanxi = ['太原','大同','晉中','呂梁'];
var henan = ['鄭州','開封','洛陽'];
map1.put('北京',beijing);
map1.put('山西',shanxi);
map1.put('河南',henan);
var provns = map1.keyArr;
var citys;
function trim (txt) {
var afterTxt = txt.replace(/^\s*/,'').replace(/\s*$/,'');
return afterTxt;
}
function mouseIn () {
uname.value="";
unameYanzheng();
}
function mouseOut () {
unameYanzheng();
}
function unameYanzheng () {
span1.innerHTML = "";
if(uname.value=="請輸入使用者名"){
//不能不輸入
span1.innerHTML = "使用者名不正确";
span1.className = "error";
}else if(trim(uname.value)==""){
span1.innerHTML = "使用者名不能為空";
span1.className = "error";
}else if(trim(uname.value).length<){
span1.innerHTML = "使用者名長度至少6個字元";
span1.className = "error";
}else{
span1.className = "success";
// form1.submit();
}
}
function mouseIn2 () {
pwd.value="";
pwd.type="password";
pwdYanzheng();
}
function mouseOut2 () {
pwdYanzheng();
}
function pwdYanzheng () {
span2.innerHTML = "";
if(pwd.value=="請輸入密碼"){
//不能不輸入
span2.innerHTML = "密碼不正确";
span2.className = "error";
}else if(trim(pwd.value)==""){
span2.innerHTML = "密碼不能為空";
span2.className = "error";
}else if(trim(pwd.value).length<||trim(pwd.value).length>){
span2.innerHTML = "密碼長度6-20個字元";
span2.className = "error";
}else{
span2.className = "success";
// form1.submit();
}
}
function mouseIn5 () {
pwd2.value="";
pwd2.type="password";
pwd2Yanzheng();
}
function mouseOut5 () {
pwd2Yanzheng();
}
function pwd2Yanzheng () {
span5.innerHTML = "";
if(pwd2.value=="請輸入密碼"){
//不能不輸入
span5.innerHTML = "密碼不正确";
span5.className = "error";
}else if(trim(pwd2.value)==""){
span5.innerHTML = "密碼不能為空";
span5.className = "error";
}else if(trim(pwd2.value).length<||trim(pwd2.value).length>){
span5.innerHTML = "密碼長度6-20個字元";
span5.className = "error";
}else if(trim(pwd2.value)!=trim(pwd.value)){
span5.innerHTML = "兩次輸入密碼不一緻";
span5.className = "error";
}else{
span5.className = "success";
// form1.submit();
}
}
function mouseIn3 () {
mail.value="";
mailYanzheng();
}
function mouseOut3 () {
mailYanzheng();
}
function isMail (email) {
var regExp = /^\d{5,10}@\w+\.(com|net|org)$/;
var flag = regExp.test(email);
return flag;
}
function mailYanzheng () {
span3.innerHTML = "";
if(mail.value=="請輸入郵箱"){
//不能不輸入
span3.innerHTML = "郵箱格式不正确";
span3.className = "error";
}else if(trim(mail.value)==""){
span3.innerHTML = "郵箱格式不能為空";
span3.className = "error";
}else if(!isMail(trim(mail.value))){
span3.innerHTML = "郵箱格式不正确";
span3.className = "error";
}else{
span3.className = "success";
}
}
function mouseIn4 () {
phone.value="";
phoneYanzheng();
}
function mouseOut4 () {
phoneYanzheng();
}
function isPhone (phone) {
var regExp = /^(15[0-9]{1}|18[0-9]{1}|13[0-9]{1})\d{8}$/;
var flag = regExp.test(phone);
return flag;
}
function phoneYanzheng () {
span4.innerHTML = "";
if(phone.value=="請輸入手機号"){
//不能不輸入
span4.innerHTML = "手機号格式不正确";
span4.className = "error";
}else if(trim(phone.value)==""){
span4.innerHTML = "手機号不能為空";
span4.className = "error";
}else if(!isPhone(trim(phone.value))){
span4.innerHTML = "手機号格式不正确";
span4.className = "error";
}else{
span4.className = "success";
}
}
function yanzheng () {
uname.onblur();
pwd.onblur();
mail.onblur();
phone.onblur();
//通過span的 error屬性 的個數 判斷有沒有錯誤的資訊
var errorSpanArr = document.getElementsByClassName("error");
if(errorSpanArr.length>){//有錯誤的資訊
//不送出表單
// regBtn.disabled = "disabled";
alert('請正确填寫資訊!');
}else{
// regBtn.disabled ="";
//送出表單
form1.submit();
}
}
window.onload = function(){
regBtn = document.getElementById("regBtn");
form1 = document.getElementById("form1");
//使用者名
uname = document.getElementById("username");
span1 = uname.nextSibling;
uname.onfocus = mouseIn;
uname.onblur = mouseOut;
uname.onkeyup = unameYanzheng;
//密碼
pwd = document.getElementById("pwd");
span2 = pwd.nextSibling;
pwd.onfocus = mouseIn2;
pwd.onblur = mouseOut2;
pwd.onkeyup = pwdYanzheng;
//确認密碼
pwd2 = document.getElementById("pwd2");
span5 = pwd2.nextSibling;
pwd2.onfocus = mouseIn5;
pwd2.onblur = mouseOut5;
pwd2.onkeyup = pwd2Yanzheng;
//郵箱
mail = document.getElementById("mail");
span3 = mail.nextSibling;
mail.onfocus = mouseIn3;
mail.onblur = mouseOut3;
mail.onkeyup = mailYanzheng;
//手機号
phone = document.getElementById("phone");
span4 = phone.nextSibling;
phone.onfocus = mouseIn4;
phone.onblur = mouseOut4;
phone.onkeyup = phoneYanzheng;
//進入網頁,就驗證,有錯不能點注冊
// yanzheng();
regBtn.onclick = yanzheng;
var provnsNode = document.getElementById("provinces");
var provn;
var provnTextNode;
for(var i in provns){
provn = document.createElement("option");
provnTextNode = document.createTextNode(provns[i]);
provn.appendChild(provnTextNode);
provnsNode.appendChild(provn);
}
}
function selectProvinces (obj) {
var opt = obj.options[obj.selectedIndex];
var cityNode = document.getElementById("citys");
//删除已添加結點,然後重新添加
cityNode.length=;
var city ;
var cityTextNode ;
for(var i in provns){
if(opt.text==provns[i]){
citys = map1.get(provns[i]);
for(var j in citys){
city = document.createElement("option");
cityTextNode = document.createTextNode(citys[j]);
city.appendChild(cityTextNode);
cityNode.appendChild(city);
}
}
}
}
</script>
</head>
<body>
<fieldset id="fieldset1">
<legend>使用者注冊</legend>
<form id="form1" action="handle.html" method="post">
<label for="username">使用者名</label>* <input type="text" name="username" id="username" value="請輸入使用者名" /><span></span><br/>
<label for="pwd">密 碼</label>* <input type="text" name="pwd" id="pwd" value="請輸入密碼" /><span></span><br/>
<label for="pwd2">确認密碼</label>* <input type="text" name="pwd2" id="pwd2" value="請确認密碼" /><span></span><br/>
<label for="mail">郵 箱</label>* <input type="text" name="mail" id="mail" value="請輸入郵箱" /><span></span><br/>
<label for="phone">手機号</label>* <input type="text" name="phone" id="phone" value="請輸入手機号" /><span></span><br/>
<label for="provinces">請選擇您的居住地--</label><br/>
省:
<select id="provinces" onchange="selectProvinces(this);">
<option value="" selected="selected">請選擇</option>
</select>
市:
<select id="citys" >
<option value="" selected="selected">請選擇</option>
</select>
<br/>
<br/>
<div id="div1">
* 為必填項。
</div><br/>
<input id="regBtn" type="button" value="注冊"/>
</form>
</fieldset>
</body>
</html>
看了這麼多正規表達式在現實中的應用,現在了解一下基本的正規表達式知識。
在js中,正規表達式以 /正規表達式/ 存在。
^以…開始 ; $以…結束 ; \s空白、空格、tab、回車 ; *貪婪模式,最大限度的比對字元串 ; \w 表示字元word ; . 表示轉義 . ; \d 表示數字digit ;{5,10} 表示數量5-10個 ;+ 表示一個或多個 ; ? 表示0個或1個 ; {5} 表示5個, {5,} 表示 5個或5個以上 ; [0,9] 表示範圍0-9
還有很多正規表達式:
例:20個常用的正規表達式
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9MGRPVTTE9UeRpXTmZEWjZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TN3YDOwkzM4EjNxkDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)