本文详细介绍如何使用JavaScript在数据提交至服务器前对HTML表单进行客户端验证。内容涵盖必填项检查、邮箱格式合法性校验、日期有效性判断以及数值域文本输入检测。通过具体的HTML结构与JS逻辑示例,帮助开发者实现基础的表单交互与错误提示功能,提升用户体验并减轻服务器压力。
JavaScript 表单验证概述
本文通过具体代码示例,为大家展示JavaScript实现表单验证的方法,供学习参考。
在将数据发送至服务器之前,可以使用JavaScript对HTML表单中的输入数据进行校验。常见的验证场景包括: 1. 检查用户是否已填写表单中的必填字段。 2. 验证用户输入的电子邮件地址是否符合规范。 3. 确认用户输入的是否为有效的日期格式。 4. 判断在数值输入域中是否错误地输入了文本内容。
HTML 表单结构实现
对应HTML文件 gspan.html
<html>
<head>
<title>表单验证实例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="check.js" type="text/javascript"></script>
<style>
span{ font-size:12px; }
.stats1{ color : #ccc; }
.stats2{ color :black; }
.stats3{ color :red; }
.stats4{ color :green; }
</style>
</head>
<body>
<form method="post" action="reg.php" onsubmit="return regs('click')" >
用户名:<input type="text" name="username" /><span class="stats1">用户名不能为空</span><br/>
邮箱:<input type="text" name="email" /><span class="stats1">邮箱不能为空</span><br/>
密码:<input type="password" name="password" /><span class="stats1">密码不能为空</span><br/>
确认密码:<input type="password" name="chkpass" /><span class="stats1">密码不能为空</span><br/>
<input type="submit" />
</form>
</body>
</html>
JavaScript 校验逻辑
对应JavaScript逻辑文件 check.js
function gspan(cobj){ //获取表单后的span 标签 显示提示信息
if (cobj.nextSibling.nodeName != 'SPAN'){
gspan(cobj.nextSibling);
} else {
return cobj.nextSibling;
}
}
//检查表单 obj【表单对象】, info【提示信息】 fun【处理函数】 click 【是否需要单击, 提交时候需要触发】
function check(obj, info, fun, click){
var sp = gspan(obj);
obj.onfocus = function(){
sp.innerHTML = info;
sp.className = 'stats2';
}
obj.onblur = function(){
if (fun(this.value)){
sp.innerHTML = "输入正确!";
sp.className = "stats4";
} else {
sp.innerHTML = info;
sp.className = "stats3";
}
}
if (click == 'click'){
obj.onblur();
}
}
onload = regs; //页面载入完执行
function regs(click){
var stat = true; //返回状态, 提交数据时用到
username = document.getElementsByName('username')[0];
password = document.getElementsByName('password')[0];
chkpass = document.getElementsByName('chkpass')[0];
email = document.getElementsByName('email')[0];
check(username, "用户名的长度在3-20之间", function(val){
if (val.match(/^\S+$/) && val.length >=3 && val.length <=20){
return true;
} else {
stat = false;
return false;
}
}, click);
check(password, "密码必须在6-20位之间", function(val){
if (val.match(/^\S+$/) && val.length >= 6 && val.length <=20){
return true;
} else {
stat = false;
return false;
}
}, click);
check(chkpass, "确定密码要和上面一致,规则也要相同", function(val){
if (val.match(/^\S+$/) && val.length >=6 && val.length <=20 && val == password.value){
return true;
} else {
stat = false;
return false;
}
}, click);
check(email, "请按邮箱规则输入", function(val){
if (val.match(/\w+@\w+\.\w/)){
return true;
} else {
stat = false;
return false;
}
}, click);
return stat;
}
以上内容为本文的全部介绍,希望能为读者的学习提供有益的帮助。