`

[code]表单验证_1.用js在客户端验证

阅读更多
1.用js在客户端验证

goodsPublish.jsp页面
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%   
    String path = request.getContextPath();   
    String basePath = request.getScheme() + "://"  
            + request.getServerName() + ":" + request.getServerPort()   
            + path + "/";   
%> 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>发布商品</title>

<link rel="stylesheet" type="text/css" href="<%=basePath%>css/mobile.css">

<script language="javascript" type="text/javascript">
var xmlHttp;    
// 创建xmlHttp;    
function createXMLHttpRequest(){    
    if(window.ActiveXObject){    
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");    
    }else if(window.XMLHttpRequest){    
        xmlHttp = new XMLHttpRequest();    
    }    
}    
   
// 删除城市选项    
function clearType2List(){    
    var type2 = document.getElementById("type2");    
    while(type2.childNodes.length > 0){    
        type2.removeChild(type2.childNodes[0]);    
    }    
}    
   
//选项省份时    
function selectType1(){    
    var type1 = document.getElementById("type1").value;//获取省份值    
    //alert(type1);  
    if(type1 == ""){ //如果为空,则清空城市选项    
        clearType2List();    
        clearType3List();
        
        var type2Select = document.getElementById("type2"); //获取城市select组件    
        var option = document.createElement("option");    
        option.appendChild(document.createTextNode("请选择分类2"));    
        type2Select.appendChild(option);
           
        
        
        return ; //返回    
    }    
   
	//不乱码3
	//type1 = escape(escape(type1)); 
	url="<%=basePath%>servlet/GetTypebyId?parentid=" + type1 + "&id="+Math.random(); 
	//alert(url);
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
	//不乱码3
}    
   
//回调函数    
function handleStateChange(){    
    if(xmlHttp.readyState == 4){    
        if(xmlHttp.status == 200){    
            updateType2List();    
        }    
    }    
}    
   
//页面更新城市集合函数    
function updateType2List(){    
    clearType2List();//首先删除先前的城市选项    
    var type2Select = document.getElementById("type2"); //获取城市select组件    
    var results = xmlHttp.responseXML.getElementsByTagName("type");//获取Ajax返回的结果,city为返回的XML里的节点       
    var option = document.createElement("option");    
    option.appendChild(document.createTextNode("请选择分类2"));    
    type2Select.appendChild(option);
    
    for(var i=0; i<results.length; i++){            
        option = document.createElement("option");  
        option.setAttribute("value",results[i].getAttribute("value")); 
        option.appendChild(document.createTextNode(results[i].firstChild.nodeValue));    
        type2Select.appendChild(option);    
    }  
    //alert(type2Select.childNodes[0].getAttribute("value"));
    //查看值是否正确
}     

/////////////

// 删除城市选项    
function clearType3List(){    
    var type3 = document.getElementById("type3");    
    while(type3.childNodes.length > 0){    
        type3.removeChild(type3.childNodes[0]);    
    }    
}    
   
//选项省份时    
function selectType2(){    
    var type2 = document.getElementById("type2").value;//获取省份值    
    //alert(type1);  
    if(type2 == ""){ //如果为空,则清空城市选项    
        clearType3List();    
        var type3Select = document.getElementById("type3"); //获取城市select组件    
        var option = document.createElement("option");    
        option.appendChild(document.createTextNode("请选择分类3"));    
        type3Select.appendChild(option);    
        return ; //返回    
    }    
   
	//不乱码3
	//type1 = escape(escape(type1)); 
	url="<%=basePath%>servlet/GetTypebyId?parentid=" + type2 + "&id="+Math.random(); 
	//alert(url);
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = handleStateChange2;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
	//不乱码3
}    
   
//回调函数    
function handleStateChange2(){    
    if(xmlHttp.readyState == 4){    
        if(xmlHttp.status == 200){    
            updateType3List();    
        }    
    }    
}    
   
//页面更新城市集合函数    
function updateType3List(){    
    clearType3List();//首先删除先前的城市选项    
    var type3Select = document.getElementById("type3"); //获取城市select组件    
    var results = xmlHttp.responseXML.getElementsByTagName("type");//获取Ajax返回的结果,city为返回的XML里的节点    
    var option = null;    
    for(var i=0; i<results.length; i++){            
        option = document.createElement("option");  
        option.setAttribute("value",results[i].getAttribute("value")); 
        option.appendChild(document.createTextNode(results[i].firstChild.nodeValue));    
        type3Select.appendChild(option);    
    }  
    //alert(type2Select.childNodes[0].getAttribute("value"));
    //查看值是否正确
}          
      
</script>  


<script language="javascript" type="text/javascript">

 //验证非空函数
 function checkNull(str,element)
 {
 	if(element.value==""){
      alert(str+"不能为空");
      element.focus();
      return false;
    }
    return true;
 }
 
 //验证长度函数
 function checkLength(str,num,element)
 {
    if(element.value.length>=num)
    {
       alert(str+"长度不能超过"+num+"位");
       element.focus();
       return false;
    }
    return true;
 }
 
 //验证非法字符函数
 function checkFeiFa(str,element)
 {
    
    var ve =/[@#\$%\^&\*]+/g;  //@#$%^&*这些字符为非法
    if(ve.test(element.value)){
     element.focus();
     alert(str+"含有非法字符@#$%^&*!");
      return false;
    }
    return true;
 }
 
 //验证为整数函数
 function checkInt(str,element)
 {
 	var ve= /^[1-9][0-9]*$/;
 	 if(!ve.test(element.value)){
     element.focus();
     alert(str+"必须为整数!");
      return false;
    }
    return true;
 }
 
 //验证价格函数
 function checkPrice(str,element)
 {
     var re = /^[1-9][0-9]*$|^[0-9].[0-9]+$/;
     if(!re.test(element.value)){
     element.focus();
     alert(str+"格式出错!");
      return false;
    }
    return true;
 }
 
 //验证为图片格式.jpg,.gif,.bmp格式
 function checkPic(element)
 {
  	 if(element.value.toLowerCase().indexOf(".jpg")<0&&element.value.toLowerCase().indexOf(".gif")<0&&element.value.toLowerCase().indexOf(".bmp")<0){
      alert("只能上传.jpg,.gif,.bmp格式的图片!");
      return false;
    }
    return true;
 }
 
 //验证标题
 function checkTitle(str,num,element)
 {
   if(!checkNull(str,element))
   {
   return false;
   }
   if(!checkLength(str,num,element))
   {
   return false;
   }
   if(!checkFeiFa(str,element))
   {
   return false;
   }
   return true;
 }
 
 //验证商品数量
 function checkGoodsnum(str,num,element)
 {
    if(!checkNull(str,element))
    {
    return false;
    }
    if(!checkInt(str,element))
    {
    return false;
    }
    if(!checkLength(str,num,element))
    {
    return false;
    }
    return true;
 }
 
 //验证价格
 function checkEms(str,element)
 {
 	if(!checkPrice(str,element))
    {
    return false;
    }
    return true;
 }
 
 //验证图片
 function checkImage(str,element)
 {
 	if(!checkNull(str,element))
    {
    return false;
    }
    if(!checkPic(element))
    {
    return false;
    }
    return true;
 }
 
 //被调用的验证函数
 function check(){
    var title = document.getElementById("title");
    var price = document.getElementById("price"); 
    var goodsnum = document.getElementById("goodsnum");
    var image = document.getElementById("image");
    var ems = document.getElementById("ems");
    var py = document.getElementById("py");
    var kd = document.getElementById("kd");
      
   
    if(!checkTitle("商品名称",20,title))
    {
    return false;
    }
    if(!checkGoodsnum("商品数量",7,goodsnum))
    {
    return false;
    }
    if(!checkEms("价格格式",ems))
    {
    return false;
    }
    if(!checkImage("图片",image))
    {
    return false;
    }
    return true;
      
  }
  </script>
</head>

 

<body>

	<jsp:include page="/include/headm.jsp" flush="true" />
	
	<div id="container">
		
		<jsp:include page="/include/leftm.jsp" flush="true" />
		
		<div id="rightside" >
			
			<div class="margin5 border1">
			<form id="form1" name="form1" enctype="multipart/form-data" method="post" action="<%=basePath%>servlet/GoodsPublish" onsubmit="return check();">
			  <input type="hidden" name="shopid" value="<%=request.getParameter("shopid")%>" />
			  <label for="title">商品名称:</label>
			  <input type="text" name="title" id="title" />
			  <br/>
			  <label for="info">商品简介:</label>
			  <input type="text" name="info" id="info" />
			  <br/>
			  <label for="price">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;价格:</label>
			  <input type="text" name="price" id="price" />
			  <br/>
			  <label for="ems">配送价格:</label>
			  <input type="text" name="ems" id="ems" />
			  <br/>
			  <label for="py">平邮价格:</label>
			  <input type="text" name="py" id="py" />
			  <br/>
			  <label for="kd">快递价格:</label>
			  <input type="text" name="kd" id="kd" />
			  <br/>
			  <label for="goodsnum">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数量:</label>
			  <input type="text" name="goodsnum" id="goodsnum" />
			  <br/>
			  <label for="goodsnum">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;图片:</label>
			  <input type="file" name="image" id="image" />
			  <br/>
			  
			   <label for="type1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分类1:</label>
			   <select name="type1" id="type1" onchange="selectType1();">
			    <option>请选择分类1</option>
				<c:forEach items="${sessionScope['type1list']}" var="item">
				<option value="<c:out value="${item.id}"/>"><c:out value="${item.name}"/></option>
				</c:forEach>
				</select>
			   <label for="type2">分类2:</label>
				  <select name="type2" id="type2" onchange="selectType2();">
				    <option>请选择分类2</option>
				  </select>
			   <label for="type3">分类3:</label>
			   	  <select name="type3" id="type3">
				    <option>请选择分类3</option>
				  </select>
			  <br/>
			  <label for="Submit"></label>
			  <input type="submit" name="Submit" value="提交" id="Submit" />
			  <label for="label"></label>
			  <input type="reset" name="Reset" value="重置" id="label" />
			  <br/>
			</form>
			</div>
			
		</div>
		
	</div>
	
	<jsp:include page="/include/footm.jsp" flush="true" />
	
	
</body>
</html>


1.不能为空
2.长度不超过20位
3.含非法字符@#$%^&*
4.必须是整数
5.价格格式
6.图片限制格式

regedit.jsp页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%   
    String path = request.getContextPath();   
    String basePath = request.getScheme() + "://"  
            + request.getServerName() + ":" + request.getServerPort()   
            + path + "/";   
%> 
<%
response.setHeader("Pragma", "No-cache"); 
response.setDateHeader("Expires", 0); 
response.setHeader("Cache-Control", "no-cache");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>注册页面</title>
<script type="text/javascript" src="js/jquery.js"></script>
<style type="text/css">
<!--
body {
	margin-left: 10px;
	margin-top: 10px;
	margin-right: 0px;
	margin-bottom: 0px;
}
form{
font-family:"Times New Roman", Times, serif;
font-size:12px;
color:#666666;
}
-->
</style>
<style type="text/css">
.code{
background-image:url(image/code.jpg);
font-family:Arial;
font-style:italic;
color:Red;
border:0;
padding:2px 3px;
letter-spacing:3px;
font-weight:bolder;
}
.unchanged {
border:0;
}
</style>
<link rel="stylesheet" type="text/css" href="css/mobile.css">


<script language="javascript" type="text/javascript">


  //不含中文
  function checkNoCn(str,element)
  {
    var re = /.*[\u4e00-\u9fa5]+.*$/;
    if(re.test(element.value)) 
		{ 
		alert(str+"不能含有中文!"); 
		element.focus();
		return false; 
		} 
	return true;
  }
  
  //长度范围num1>num2
  function checkLengths(num1,num2,str,element)
  {
  	if(element.value.length>=num1 || element.value.length<num2)
  	{
      alert(str+"长度出错");
      element.focus();
      return false;
    }
    return true;
  }
  
  //两次密码是否相同
  function checkSame(str,element1,element2)
  {
  	if(element1.value!=element2.value)
  	{
  		alert("两次"+str+"不相同");
  		element2.focus();
  		return false;
  	}
  	return true;
  }
  
  //手机 13X,158,159,11位的
  function checkMobile(element)
  {
    var re = /^13\d{9}|15[8,9]\d{8}$/g;
  	if(!re.test(element.value))
  	{
     	 alert("手机号码输入有误!");
         return false;
    }
    return true;
  }
  
  //邮箱  X@X.com
  function checkEmail(element)
  {
  	var re = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
  	if(!re.test(element.value)) 
	{ 
	alert("邮箱格式不正确!"); 
	element.focus();
	return false; 
	} 
	return true;
  }
  
  //用户名
  function checkUsername(num1,num2,str,element)
  {
  	if(!checkNoCn(str,element))
  	{
  	return false;
  	}
  	if(!checkLengths(num1,num2,str,element))
  	{
  	return false;
  	}
  	return true;
  	
  }
  
  //密码
  function checkPassword2(str,element1,element2)
  {
  	if(!checkSame(str,element1,element2))
  	{
  		return false;
  	}
  	return true;
  }
  
  //手机
  function checkMob(element)
  {
  	if(!checkMobile(element))
  	{
  	return false;
  	}
  	return true;
  }
  
  
  function check(){
    var username = document.getElementById("username");
    var password = document.getElementById("password"); 
    var password2 = document.getElementById("password2");
    var mob = document.getElementById("mob");
     var email = document.getElementById("email");
    var certificate = document.getElementById("certificate");
     var person = document.getElementById("person");
    var telno = document.getElementById("telno");
    var address = document.getElementById("address");
    var postno = document.getElementById("postno");
      
   // var inputCode = document.getElementById("input1").value.toUpperCase();
     
    if(!checkUsername(20,5,"用户名",username))
    {
    	return false;
    }
    if(!checkPassword2("密码",password,password2))
    {
    	return false;
    }
    if(!checkMob(mob))
    {
    	return false;
    }
    if(!checkEmail(email))   //邮箱
    {
    	return false;
    }
    
    return true;
     
  }
  </script>

</head>
<body >

	<jsp:include page="include/head.jsp" flush="true" />
	
	<div id="container">
		
		<div>
<form id="form1" name="form1" method="post" action="servlet/RegeditServlet" onsubmit="return check();">
  <label for="username"> 用户名:</label>
  <input type="text" name="username" id="username" />* 5-20位字母、数字或字符组合<span class="STYLE1" style="color: red" id="result"></span>
  <br/>
  <label for="password" >  密码:</label>
  <input type="password" name="password" id="password" size="22"/>* 6-20位字母、数字或字符组合
  <br/>
  <label for="password2">重复密码:</label>
  <input type="password" name="password2" id="password2" size="22"/>*
  <br/>
  <label for="mob">注册手机:</label>
  <input type="text" name="mob" id="mob" />
  <br/>
  <label for="email">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E-mail:</label>
  <input type="text" name="email" id="email" />
  <br/>
  <label for="certificatetype">证件类型:</label>
  <select name="certificatetype" id="certificatetype">
    <option value="身份证">身份证</option>
    <option value="车官证">车官证</option>
    <option value="工商证">工商证</option>
  </select>
  <br/>
  <label for="certificate">&nbsp;&nbsp;&nbsp;&nbsp;证件号:</label>
  <input type="text" name="certificate" id="certificate" />
  <br/>
  <label for="person">&nbsp;&nbsp;&nbsp;&nbsp;联系人:</label>
  <input type="text" name="person" id="person" />
  <br/>
  <label for="sex">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;性别:</label>
  <select name="sex" id="sex">
    <option value="1">男</option>
    <option value="0">女</option>
  </select>
  <br/>
  <label for="telno">联系电话:</label>
  <input type="text" name="telno" id="telno" />
  <br/>
  <label for="address">联系地址:</label>
  <input type="text" name="address" id="address" />
  <br/>
  <label for="postno">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;邮编:</label>
  <input type="text" name="postno" id="postno" />
  <br/>
  <label for="checkno">&nbsp;&nbsp;&nbsp;&nbsp;验证码:</label>
		  <input type="text" name="input1" id="input1" maxlength="4"/>*
		  <input type="text" id="checkCode" class="code" style="width: 55px" readonly="readonly"/> <a href="#" onclick="createCode()">看不清楚</a>
 <br/>
  <input id="choose" type="checkbox" class="radio" checked="checked" />我已阅读并同意<a href="viewAdvice.jsp"
							target="_blank">《XXX通用户协议》</a>
  <br/>						
  <label for="Submit"></label>
  <input type="submit" name="Submit" value="注册" id="Submit" />
  <label for="label"></label>
  <input type="reset" name="Reset" value="重置" id="label" />
  <br/>
</form>
</div>
</div>

	<jsp:include page="include/foot.jsp" flush="true" />
	
</body>
</html>


1.不能含中文
2.长度范围
3.两次密码不相同
4.手机号码格式
5.邮箱格式
分享到:
评论

相关推荐

    Validate_code.rar_struts valida_struts valida_struts validate_v

    客户端验证通常使用JavaScript进行,可以即时反馈错误,提高用户体验;而服务器端验证则是必需的,因为它能确保数据安全,不受恶意用户篡改。 `Validate_code.rar_struts`可能是一个包含Struts验证框架的示例项目,...

    Javascript的表单验证-提交表单_.docx

    在本文中,我们将深入探讨如何使用JavaScript进行表单验证,特别是在提交表单时确保数据的安全性和有效性。 首先,表单验证的重要性在于防止“坏数据”到达服务器。这不仅能够节省服务器资源,还能提高用户体验,...

    表单验证 jquery.validate.js与poshytip集成

    本篇将详细探讨如何使用jQuery库的validate.js插件和Poshytip工具进行高效且友好的表单验证。 jQuery.validate.js是一个非常流行的JavaScript库,用于对HTML表单进行客户端验证。它提供了丰富的内置验证规则,如...

    JQuery表单验证控件结合struts1的例子

    在Struts1中,表单验证通常在服务器端进行,通过ActionForm类来实现。不过,为了提高用户体验,我们可以结合JQuery validate插件实现客户端验证。 在Struts1配置文件(struts-config.xml)中,我们需要为ActionForm...

    Web_JSP_FileUpload.zip_fileupload

    在实际的Web开发中,开发者通常会编写测试代码来验证文件上传功能是否正常工作,包括文件类型检查、大小限制、错误处理以及文件存储路径的管理等。 **核心知识点:** 1. **JSP技术**:JSP是Java EE的一部分,用于...

    cs简单的图书管理系统_asp.netC#.zip

    "CS"通常代表"Client Side",在这里可能指的是客户端部分,而ASP.NET是微软公司推出的一种用于构建Web应用程序的框架,它允许开发者使用C#等语言来编写服务器端代码。 【描述解析】 描述部分与标题相同,"cs简单的...

    Microsoft Dynamics CRM 2015 Application Design_Code.zip

    1. **JavaScript 开发**:JavaScript 是Dynamics CRM中常用的客户端脚本语言,用于实现页面交互、验证和自定义行为。熟练掌握JQuery等库可提升开发效率。 2. **插件开发**:通过编写插件,可以在CRM的生命周期中...

    oracle_project.rar_hospital

    这可能涉及到响应式设计、表单验证、数据可视化等功能。 8. **异常处理与日志记录**:系统的稳定性至关重要,完善的异常处理机制和详尽的日志记录能帮助开发者及时发现并解决问题。 这个“oracle_project”可能...

    html5客户端表单验证

    因此,开发时应结合JavaScript进行验证,确保在所有浏览器中都能实现表单验证。 六、JavaScript增强验证 使用JavaScript库如jQuery Validation插件,可以进一步增强验证功能,提供更复杂的规则和更好的用户体验。...

    jquery表单验证大全.rar

    jQuery.validate.js是由Jörn Zaefferer创建的一个轻量级、高效的验证插件,它是jQuery生态系统中的一个强大工具,用于实现客户端的表单验证。该插件能够帮助开发者快速实现各种复杂的验证规则,无需编写大量的...

    (R)-ASP+SQL-Code-吉林市人才市场www.jlsrc.com-源代码全(1)

    该压缩包文件包含的是"(R)-ASP+SQL-Code",这意味着它是一个使用Active Server Pages (ASP)技术和SQL数据库的网站源代码集合,主要用于吉林市人才市场的在线平台www.jlsrc.com。源代码的完整性表明这是一个完整的...

    jquery表单验证

    对于表单验证,jQuery提供了一种高效且用户友好的解决方案,避免了提交无效数据到服务器的情况。本篇文章将深入探讨jQuery如何实现表单验证。 首先,我们需要了解表单验证的基本原理。在HTML中,我们可以通过设置`...

    蓝色线条简洁的大学网站模板下_蓝色 教育 学校 简洁 大学 线条 整站 商务_html网站模板_网页源码移动端前端_H.rar

    在这个模板中,可能包含了JavaScript代码,用于实现动态效果,如滑动菜单、滚动动画、表单验证等,提升用户在浏览网站时的体验。 4. **响应式设计**:由于标签中提到了“移动端前端”,这意味着这个网站模板采用了...

    商务投资咨询企业模板是一款大气质感的蓝色商务投资咨询企业网站模板。_html网站模板_网页源码移动端前端_H5模板_自.rar

    在这个商务投资咨询模板中,JS可能被用于实现动态效果,如下拉菜单、滑动展示、表单验证等功能,提升用户体验。 4. **移动端前端**:随着移动设备的普及,网站需要适应不同的屏幕尺寸。这个模板考虑了移动端的用户...

    粉色风格案例展示网站模板是一款粉红色简洁风格的CSS案例作品展示模板下载。_html网站模板_网页源码移动端前端_H5.rar

    在这个模板中,JavaScript可能用于实现页面的交互功能,比如响应式导航菜单、滚动动画、图片轮播或表单验证。它还可以与CSS配合,通过JavaScript库如jQuery,添加更复杂的行为,如动态加载内容或自适应布局调整。 ...

    jQ顶部下拉ajax验证表单 jQuery顶部下拉ajax验证表单代码下载.zip

    在本文中,我们将深入探讨如何实现一个基于jQuery的顶部下拉AJAX验证表单。这个技术结合了HTML5、CSS和JavaScript,为用户提供了一个高效、交互性强的表单提交体验。我们将从以下几个方面来详细讨论这个主题: 1. *...

    Ajax提交验证

    本文将详细介绍如何使用Ajax技术来实现表单提交时的数据验证。 #### 一、Ajax技术简介 Ajax是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,它可以实现局部刷新页面的功能。这使得网页...

    新媒体公司HTML5网页模板是一款蓝色清爽的专业媒体公司html5模板下载。_html网站模板_网页源码移动端前端_H.rar

    在这个HTML5模板中,JavaScript可能被用来实现动态效果,如下拉菜单、滑动图片展示、表单验证等功能,提高用户体验。同时,可能还采用了诸如jQuery这样的库来简化JavaScript代码,使其更易于维护和扩展。 模板的...

    表单验证(Jquery)

    jQuery.validate插件是基于jQuery的,专门用于实现客户端表单验证,提供了丰富的选项和方法来定制验证规则,使得开发者能够轻松创建功能强大的表单验证机制。 1. **安装与引入** 要使用jQuery.validate插件,首先...

Global site tag (gtag.js) - Google Analytics