静态页面表单中js验证
笔记:
1.
onblur事件:onblur 事件会在对象失去焦点时发生。http://www.w3school.com.cn/jsref/event_onblur.asp
onkeyup事件:onkeyup 事件会在键盘按键被松开时发生。http://www.w3school.com.cn/jsref/event_onkeyup.asp
这两者事件的发生机制截然不同,在用js对表单进行验证的时候,建议大家,尽量用onkeyup,因为交互性好,能够实时反馈用户输入的有效性;
2.
js中空字符串“” 是等于false ,大家可以测试下,alert(“”==false);这点,一定要注意;
3.
js方法的返回值,以及return;(跟java、C#等等,一样)。return可以直接跳出方法。
4.
对于表单验证,数据ok了,怎么提交,如果数据不对,怎么让表单不提交。
<input type="submit" value="提交数据">
<input type="button" value="提交数据">
5.
如何利用onclick 和onsubmit 以及form.submit方法,以及什么时候用最好;
onclick事件:onclick 事件会在对象被点击时发生。请注意, onclick 与 onmousedown 不同。单击事件是在同一元素上发生了鼠标按下事件之后又发生了鼠标放开事件时才发生的。http://www.w3school.com.cn/jsref/event_onclick.asp
onsubmit事件:onsubmit 事件会在表单中的确认按钮被点击时发生。http://www.w3school.com.cn/jsref/event_onsubmit.asp
form.submit(Html DOM submit):submit() 方法把表单数据提交到 Web 服务器。http://www.w3school.com.cn/jsref/met_form_submit.asp
上面的东西,经常用到,参考链接的讲解以及实例
function check() { // 表单提交时执行, 验证所有表单项
var bUsername = checkUsername();
var bPassword = checkPassword();
var bConfirm = checkConfirm();
var bEmail = checkEmail();
var bCity = checkCity();
var bGender = checkGender();
var bInterest = checkInterest();
var result = bUsername && bPassword && bConfirm && bEmail && bCity && bGender && bInterest;
return result; // 如果所有表单项都验证成功, 返回true
}
function checkUsername() {
var value = document.getElementById("username").value; // 获取input, 获取值
value = trim(value); // 去掉前后空白
var span = document.getElementById("usernameMsg"); // 获取SPAN
var msg = ""; // 错误消息
var regex = /^\w{1,10}$/; // 正则表达式: 字母数字下划线, 1到10位
if (!value) // 判断输入值是否为空
msg = "用户名必须填写"; // 如果是空的, 那么修改错误消息
else if (!regex.test(value)) // 如果不能匹配正则
msg = "用户名不合法";
span.innerHTML = msg; // 把错误消息放入SPAN
span.parentNode.parentNode.style.color = msg ? "red" : "black"; // 根据是否包含错误提示, 改变tr颜色
return msg == ""; // 如果没有错误消息, 代表验证成功
}
function checkPassword() {
var value = document.getElementById("password").value;
var span = document.getElementById("passwordMsg");
var msg = "";
var regex = /^.{6,16}$/;
if (!value)
msg = "密码必须填写";
else if (!regex.test(value)) // 如果不能匹配正则
msg = "密码不合法";
span.innerHTML = msg;
span.parentNode.parentNode.style.color = msg ? "red" : "black";
return msg == "";
}
function checkConfirm() {
var confirmValue = document.getElementById("confirm").value;
var passwordValue = document.getElementById("password").value;
var span = document.getElementById("confirmMsg");
var msg = "";
if (confirmValue != passwordValue)
msg = "密码必须保持一致";
span.innerHTML = msg;
span.parentNode.parentNode.style.color = msg ? "red" : "black";
return msg == "";
}
function checkEmail() {
var value = document.getElementById("email").value;
value = trim(value);
var span = document.getElementById("emailMsg");
var msg = "";
var regex = /^[\w-]+@([\w-]+\.)+[a-zA-Z]{2,4}$/;
if (!value)
msg = "邮箱必须填写";
else if (!regex.test(value))
msg = "邮箱格式不合法";
span.innerHTML = msg;
span.parentNode.parentNode.style.color = msg ? "red" : "black";
return msg == "";
}
function checkCity() {
var value = document.getElementById("city").value;
var span = document.getElementById("cityMsg");
var msg = "";
if (!value)
msg = "城市必须选择";
span.innerHTML = msg;
span.parentNode.parentNode.style.color = msg ? "red" : "black";
return msg == "";
}
function checkGender() {
var genderArr = document.getElementsByName("gender");
var span = document.getElementById("genderMsg");
var msg = "";
if (!genderArr[0].checked && !genderArr[1].checked)
msg = "性别必须选择";
span.innerHTML = msg;
span.parentNode.parentNode.style.color = msg ? "red" : "black";
return msg == "";
}
function checkInterest() {
var interestArr = document.getElementsByName("interest");
var span = document.getElementById("interestMsg");
var msg = "";
if (!interestArr[0].checked && !interestArr[1].checked && !interestArr[2].checked)
msg = "兴趣必须选择";
span.innerHTML = msg;
span.parentNode.parentNode.style.color = msg ? "red" : "black";
return msg == "";
}
// 利用正则去掉空字符串
function trim(s) { return s.replace(/^\s+|\s+$/g, ""); }
@{
ViewBag.Title = "Index";
}
<script src="~/Scripts/check.js"></script>
<script type="text/javascript">
</script>
<h2>静态页面表单中js验证</h2>
<body>
<form action="~/HTML/success.html" method="get" id="form" onsubmit="return check();">
<table width="500" align="center" cellpadding="5" cellspacing="0">
<tr>
<td align="right" style="width:150px">用户名:</td>
<td>
<input type="text" name="username" id="username" onkeyup="checkUsername();">
<span id="usernameMsg"></span>
</td>
</tr>
<tr>
<td align="right">密码:</td>
<td>
<input type="password" name="password" id="password" onkeyup="checkPassword();">
<span id="passwordMsg"></span>
</td>
</tr>
<tr>
<td align="right">确认密码:</td>
<td>
<input type="password" id="confirm" onkeyup="checkConfirm();">
<span id="confirmMsg"></span>
</td>
</tr>
<tr>
<td align="right">邮箱:</td>
<td>
<input type="text" name="email" id="email" onkeyup="checkEmail();">
<span id="emailMsg"></span>
</td>
</tr>
<tr>
<td align="right">城市:</td>
<td>
<select name="city" id="city" onchange="checkCity();">
<option value="">-请选择城市-</option>
<option value="bj">西二旗</option>
<option value="cd">上地</option>
<option value="gz">西三旗</option>
<option value="sh">望京</option>
<option value="wh">回龙观</option>
<option value="sz"></option>
</select>
<span id="cityMsg"></span>
</td>
</tr>
<tr>
<td align="right">性别:</td>
<td>
<input type="radio" name="gender" value="male" onclick="checkGender();"> 男
<input type="radio" name="gender" value="female" onclick="checkGender();"> 女
<span id="genderMsg"></span>
</td>
</tr>
<tr>
<td align="right">兴趣:</td>
<td>
<input type="checkbox" name="interest" value="sing" onclick="checkInterest();"> data2
<input type="checkbox" name="interest" value="dance" onclick="checkInterest();"> lol
<input type="checkbox" name="interest" value="mahjong" onclick="checkInterest();"> 炉石传说
<span id="interestMsg"></span>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="提交数据">
</td>
</tr>
</table>
</form>
</body>
var bUsername = checkUsername();
var bPassword = checkPassword();
var bConfirm = checkConfirm();
var bEmail = checkEmail();
var bCity = checkCity();
var bGender = checkGender();
var bInterest = checkInterest();
上面的方法的返回值是 return msg=="" 。返回的 boolean类型的值。
所以,后面才能用
var result = bUsername && bPassword && bConfirm && bEmail && bCity && bGender && bInterest;
return result; // 如果所有表单项都验证成功, 返回true
静态页面表单中js验证的更多相关文章
- Struts2(二)---将页面表单中的数据提交给Action
问题:在struts2框架下,如何将表单数据传递给业务控制器Action. struts2中,表单想Action传递参数的方式有两种,并且这两种传参方式都是struts2默认实现的,他们分别是基本属性 ...
- 静态页分页功能js代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JS实现HTML静态页传值的方法
JS实现HTML静态页传值的方法 作者:前端开发-武方博 发布:2012-10-29 分类:javascript 阅读:8,735次 此处使用JS方式实现静态页之间值传递,其实很简单,废话不多 ...
- JavaScript学习——使用JS完成注册页面表单校验
1.步骤分析 第一步:确定事件(onsubmit)并为其绑定一个函数 第二步:书写这个函数(获取用户输入的数据<获取数据时需要在指定位置定义一个 id>) 第三步:对用户输入的数据进行判断 ...
- 把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进)
#把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进) ##背景 项目中经常需要把JSON数据填充到页面表单,一开始我使用easyui自带的form load方法,觉得效率很低,经 ...
- “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第六篇(图片新闻的添加以及带分页的静态页的生成)
“MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第六篇(图片新闻的添加以及带分页的静态页的生成) 一.这篇文章主要是要实现:图片新闻的添加,无刷新图片的上传,以及添加新闻静 ...
- 九月二十八JS验证
js表单验证 js可用发来在数据被送往服务器前对HTML表单中的这些输入数据进行验证 被js验证的这些典型的表单数据有: >用户是否已填写表单中的必填项目: >用户输入的邮件地址是否是合法 ...
- SpringMVC接收页面表单参数-java-电脑编程网
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- nginx反向代理转发后页面上的js css文件无法加载【原创】
故障现象:nginx做代理转发后,发现页面上的js css文件无法加载,页面样式乱了. 原因:没有配置静态资源 解决js css文件无法加载无法访问的问题 解决办法: 修改配置文件nginx.conf ...
随机推荐
- JS判断页面是否加载完成
用 document.readyState == "complete" 判断页面是否加载完成 传回XML 文件资料的目前状况. 基本语法intState = xmlDocument ...
- hdu 6057 Kanade's convolution(子集卷积)
题解: 然后就是接下来如何fwt 也就是如何处理bit(x) - bit(y) = bit(k)这个条件. 其实就是子集卷积. 把bit(x)和bit(y)划分成两个集合,然后就是子集卷积的形式. 这 ...
- SRM709 div1 Xscoregame(状压dp)
题目大意: 给定一个序列a,包含n个数(n<=15),每个数的大小小于等于50 初始时x = 0,让你每次选a中的一个数y,使得x = x + x^y 问如何安排选择的次序,使得最终结果最大. ...
- [NOIP2017 TG D2T3]列队
题目大意:有一个$n \times m$的方阵,第$i$行第$j$列的人的编号是$(i-1) \times m + j$. 现在有$q$个出列操作,每次让一个人出列,然后让这个人所在行向左看齐,再让最 ...
- Flash by sshockwave [树dp]
题目 给定一棵树,每个点有一个活动时间,长度为正整数$t_i$ 你需要安排每个点的活动时间什么时候开始什么时候结束,并且满足:任何一个时刻没有两个相邻的点都在活动 开始时刻为0,在以上条件下最小化所有 ...
- C&C++——段错误(Segmentation fault)
C/C++中的段错误(Segmentation fault) Segment fault 之所以能够流行于世,是与Glibc库中基本所有的函数都默认型参指针为非空有着密切关系的.来自:http://o ...
- 线程--promise furture 同步
http://www.cnblogs.com/haippy/p/3279565.html std::promise 类介绍 promise 对象可以保存某一类型 T 的值,该值可被 future 对象 ...
- 如何配置开源中国Maven库以加快依赖包下载速度
有时有某些地方由于网络问题,访问maven主仓库比较慢,甚至有可能无法下载某些jar包,此时可以把开源中国Maven库配置到settings.xml文件中,加快依赖包的下载速度. 具体如何配置? 在m ...
- Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D
D. Little Artem and Dance time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- [SCOI2007] 蜥蜴 (最大流)
[SCOI2007] 蜥蜴 题目背景 07四川省选 题目描述 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1 ...