使用 纯JQuery 进行 表单 验证
对于JavaScript而言,进行表单数据的验证可谓是很有必要的,而且一般我们都会在网页上先进行一下表单验证,然后服务器端再次进行验证,来确保用户提交数据的准确性。下面就来分享一个JQuery实现的表单验证。
本文的大纲为:
制作表单
- 要想实现表单验证,前提是得有个表单了。
<form method="post" action="">
<fieldset>
<legend>表单详情</legend>
<div class="int">
<label for="username">用户名:</label>
<input type="text" id="username" class="required" />
</div>
<div class="int">
<label for="email">邮 箱:</label>
<input type="email" id="email" class="required">
</div>
<div class="int">
<label for="persininfo">个人资料</label>
<textarea type="text" id="personinfo" ></textarea>
</div>
<div class="sub">
<input type="submit" value="提交" id="send">
<input type="reset" id="res">
</div>
</fieldset>
</form>
得到的界面如下:
小红点?
想必眼睛雪亮的你一经发现了后面的小红点,这就是我们定义了
input标签里面required类属性值的原因,这样可以显得我们的表单更加的人性化,更加的美观。
使用到的JQuery代码如下:
// 首先添加非空验证小红点
$("form :input.required").each(function(){
var $required = $("<strong class='high'>*</strong>");
$(this).parent().append($required);
});
正式的表单验证
- 使用markdown的流程图进行演示吧,思路如下
- 使用JQuery也是比较简单的,只要是思路有了,剩下的就是些语法问题。
// 下面添加每个元素的特定的验证规则
$("form :input").blur(function(){
var $parent = $(this).parent();
// 验证用户名
if($(this).is("#username")){
if(this.value=="" || this.value.length<6){
var errmsg = "请至少输入6位的用户名!";
$parent.append("<span class='error'>"+errmsg+"</span>");
}else{
var rightmsg = "输入数据正确!";
$parent.append("<span>"+rightmsg+"</span>");
}
}
// 验证邮箱
if($(this).is("#email")){
if(this.value==""|| (this.value!=""&& !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value))){
var errmsg = "请输入正确的邮箱格式!";
$parent.append("<span class='error'>"+errmsg+"</span>");
}else{
var rightmsg = "输入正确!";
// $parent.append("<span>"+rightmsg+"</span>");
$parent.append("<span>"+rightmsg+"</span>");
}
}
});
- 界面效果
优化效果
现在出错提示已经有了,但是如果我们修正了input标签里面的数据,错误提示仍然会存在,所以我们需要在其失去鼠标焦点的时候将出错的提示语句删掉。所以我们需要为form :input.required标签们添加一个blur事件。
// 失去焦点之后删除之前的数据提示
$("form :input.required").blur(function(){
var $parent = $(this).parent();
// $parent.find(".error").remove();
if($(this).is("#username")){
if(this.value=="" || this.value.length<6){
// var errmsg = "请至少输入6位的用户名!";
// $parent.append("<span class='error'>"+errmsg+"</span>");
}else{
$parent.find(".error").remove();
}
}
// 验证邮箱
if($(this).is("#email")){
if(this.value==""|| (this.value!=""&& !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value))){
// var errmsg = "请输入正确的邮箱格式!";
// $parent.append("<span class='error'>"+errmsg+"</span>");
}else{
$parent.find(".error").remove();
}
}
})
实现的效果如下:
完整的例子
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>表单的选项验证</title>
<script type="text/javascript" src="jquery-2.2.4.min.js"></script>
<style>
.int {
width: 200px;
padding: 12px;
background-color: silver;
}
.container {
width: 240px;
align-content: center;
display: block;
}
.high {
color: red;
}
</style>
</head>
<body>
<div align="center" class="container">
<form method="post" action="">
<fieldset>
<legend>表单详情</legend>
<div class="int">
<label for="username">用户名:</label>
<input type="text" id="username" class="required" />
</div>
<div class="int">
<label for="email">邮 箱:</label>
<input type="email" id="email" class="required">
</div>
<div class="int">
<label for="persininfo">个人资料</label>
<textarea type="text" id="personinfo" ></textarea>
</div>
<div class="sub">
<input type="submit" value="提交" id="send">
<input type="reset" id="res">
</div>
</fieldset>
</form>
</div>
<script>
// 首先添加非空验证小红点
$("form :input.required").each(function(){
var $required = $("<strong class='high'>*</strong>");
$(this).parent().append($required);
});
// 下面添加每个元素的特定的验证规则
$("form :input").blur(function(){
var $parent = $(this).parent();
// 验证用户名
if($(this).is("#username")){
if(this.value=="" || this.value.length<6){
var errmsg = "请至少输入6位的用户名!";
$parent.append("<span class='error'>"+errmsg+"</span>");
}else{
var rightmsg = "输入数据正确!";
$parent.append("<span>"+rightmsg+"</span>");
}
}
// 验证邮箱
if($(this).is("#email")){
if(this.value==""|| (this.value!=""&& !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value))){
var errmsg = "请输入正确的邮箱格式!";
$parent.append("<span class='error'>"+errmsg+"</span>");
}else{
var rightmsg = "输入正确!";
// $parent.append("<span>"+rightmsg+"</span>");
$parent.append("<span>"+rightmsg+"</span>");
}
}
});
// 失去焦点之后删除之前的数据提示
$("form :input.required").blur(function(){
var $parent = $(this).parent();
// $parent.find(".error").remove();
if($(this).is("#username")){
if(this.value=="" || this.value.length<6){
// var errmsg = "请至少输入6位的用户名!";
// $parent.append("<span class='error'>"+errmsg+"</span>");
}else{
$parent.find(".error").remove();
}
}
// 验证邮箱
if($(this).is("#email")){
if(this.value==""|| (this.value!=""&& !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value))){
// var errmsg = "请输入正确的邮箱格式!";
// $parent.append("<span class='error'>"+errmsg+"</span>");
}else{
$parent.find(".error").remove();
}
}
})
</script>
</body>
</html>
在实际的开发中,表单验证是非常的实用的,希望这段文字能帮到需要帮助的人。
使用 纯JQuery 进行 表单 验证的更多相关文章
- 纯CSS实现表单验证
ladies and 乡亲们,表单验证你在做吗?客户端or服务器端,javascript or jquery,动手写 or 使用插件,今天我们来探索下使用纯css实现表单验证,借以学习css sele ...
- ASP.NET MVC Jquery Validate 表单验证的多种方式
在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...
- jQuery formValidator表单验证插件
什么是jQuery formValidator? jQuery formValidator表单验证插件是客户端表单验证插件. 在做B/S开发的时候,我们经常涉及到很多表单验证,例如新用户注册,填写个人 ...
- [转]ASP.NET MVC Jquery Validate 表单验证的多种方式介绍
在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...
- Jquery Validate 表单验证的多种方式
ASP.NET MVC Jquery Validate 表单验证的多种方式 在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体 ...
- 【锋利的jQuery】表单验证插件踩坑
和前几篇博文提到的一样,由于版本原因,[锋利的jQuery]表单验证插件部分又出现照着敲不出效果的情况. 书中的使用方法: 1. 引入jquery源文件, 2. 引入表单验证插件js文件, 3. 在f ...
- jquery实现表单验证简单实例
/* 描述:基于jquery的表单验证插件. */ (function ($) { $.fn.checkForm = function (options) { var root = this; //将 ...
- jQuery的表单验证
jQuery的表单验证 直接上代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- Jquery 实现表单验证,所有验证通过方可提交
1. [代码]Jquery 实现表单验证,所有验证通过方可提交 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
随机推荐
- [CQOI2013]棋盘游戏
Description 一个n*n(n>=2)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. B的移动规则:只能移 ...
- [HNOI2003]消防局的设立
题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个巨大的树状 ...
- ●Joyoi 收集邮票
题链: http://www.joyoi.cn/problem/tyvj-2325题解.1: 期望dp,(平方的期望不等于期望的平方...) 在这个题上坑了好久,也算是对期望的理解又深了一些. 很好的 ...
- Codeforces Round #407 (Div. 1)
人傻不会B 写了C正解结果因为数组开小最后RE了 疯狂掉分 AC:A Rank:392 Rating: 2191-92->2099 A. Functions again 题目大意:给定一个长度为 ...
- ●POJ 2125 Destroying The Graph
题链: http://poj.org/problem?id=2125 题解: 最小割 + 输出割方案.建图:拆点,每个题拆为 i 和 i'分别表示其的入点和出点建立超源 S和超汇 T.S -> ...
- Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined)
C题卡了好久,A掉C题之后看到自己已经排在好后面说实话有点绝望,最后又过了两题,总算稳住了. AC:ABCDE Rank:191 Rating:2156+37->2193 A.Oath of t ...
- [POI2000] 最长公共子串
给出几个由小写字母构成的单词,求它们最长的公共子串的长度. 任务 从文件中读入单词 计算最长公共子串的长度 输出结果到文件 输入 文件的第一行是整数 n,1<=n<=5,表示单词的数量.接 ...
- (MariaDB/MySQL)之DML(2):数据更新、删除
本文目录:1.update语句2.delete语句 2.1 单表删除 2.2 多表删除3.truncate table 1.update语句 update用于修改表中记录. # 单表更新语法: UPD ...
- AD域中添加了一个策略导致的问题
AD域中添加了一个策略,导致浏览器报了一个错,点击下拉菜单选不了.查了资料说是添加信任站点就好,结果信任站点是置灰的,服务器有这个问题,本地是好的. 解决办法:本地服务器有个ie增强设置,关掉就好.
- Python3中无法导入ssl模块的解决办法
这个问题,已经困扰我好几天了,本萌新刚开始接触python,想爬取几个网页试试,发现urllib无法识别https,百度后才知道要导入ssl模块,可是发现又报错了. 本人实在无法理解为什么会报错,因为 ...