使用JavaScript进行表单校验功能


Posted in Javascript onAugust 01, 2017

文本框校验

以下是文本框的校验步骤。

1.获取待校验的文本框value值,

2.对value值设置判定条件,使用if语句或switch语句实现。

3. 若满足条件,则校验通过,返回值为true。

4. 若不满足条件则返回值为false,替换文本输出校验的提示信息。

5. 表单获取多个验证的返回值,做逻辑运算,将参数传递给表单form的onsubmit事件。

6. 在input中调用校验函数,我使用的是onblur事件触发校验函数。

下拉框校验

下拉框的校验相比文本框略有不同,下拉框中option的返回值为value,由select中的name值获取到用户的选择,因此在下拉框的校验函数中通过id获取到select中的value,在根据value值是否为空或为其余的非法值而进行不同的判断,其余的步骤也与文本框相同。

表单校验样式如下:

使用JavaScript进行表单校验功能 
使用JavaScript进行表单校验功能 
使用JavaScript进行表单校验功能

遇到的问题

  • 校验表单时出现问题但表单仍然能够提交?
  • 原因:onsubmit事件作为一个提交动作有一个默认的参数,这个参数的默认值为true,前面提到如果满足条件要求就返回true否则返回false,每一项的校验中都要设置一个布尔类型的返回值,如果所有的校验全部通过才能正常提交表单,只要有一项不满足条件也不能提交表单而需要重新输入,因此需要对每一项校验函数的返回值做一个逻辑运算,全为真则最终返回给onsubmit的值为true,否则为false,而onsubmit的参数为false则无法提交,故实现了表单校验失败时阻止提交。
  • 一开始输入错误的内容,在修改变成正确的内容之后提示仍然为之前的提示?
  • 原因:在返回值为true时,将输出提示信息的文本内容置为空,即document.getElementById(“什么什么”).innerHTML=”“;
  • onchange和onblur事件都可以用来触发校验,并且两者都会在失去焦点之后实现校验,但onblur触发校验时有可能会由于用户间断输入而提示输入内容不符合要求。
  • 表单校验的js代码段不能等页面都加载完成之后加载。

代码块

以下为程序源码:

<script>
function validateUsername(){ 
var input = document.myform.userName.value; 
if(input == “”||input == null) { 
document.myform.userName.focus(); 
document.getElementById(“uname”).innerHTML=”用户名不能为空!”; 
return false; 
} 
else if(input.length>5 || input.length<2){ 
document.getElementById(“uname”).innerHTML= “用户名在2~5位”; 
document.myform.userName.focus(); 
return false; 
} 
else{ 
document.getElementById(“uname”).innerHTML=”“; 
return true; 
} 
} 
function validatePassword(){ 
var password = document.myform.password.value;
if(password == “”||password == null) { 
document.getElementById(“upss”).innerHTML = “密码不能为空!”; 
document.myform.password.focus(); 
return false;
} 
else if(password.length>12 || password.length<6){ 
document.getElementById(“upss”).innerHTML= “密码在6~12位”; 
document.myform.password.focus(); 
return false; 
} 
else{ 
document.getElementById(“upss”).innerHTML= “”; 
return true; 
} 
} 
function validatePasswordAgain(){ 
var psw = document.myform.psw.value; 
var password = document.myform.password.value; 
if(psw!=password){ 
document.getElementById(“upssa”).innerHTML=”两次密码输入不同”; 
return false; 
}else{ 
document.getElementById(“upssa”).innerHTML = “”; 
return true; 
} 
} 
function validateGroup(){ 
var select = document.getElementById(“select”); 
if(select.value == “NONE”){ 
document.getElementById(“groupID”).innerHTML=”请选择分组!”;
return false; 
}else { 
document.getElementById(“groupID”).innerHTML=”“;
return true; 
} 
} 
function validateForm(){ 
var flag = validateUsername()&&validatePassword()&&validatePasswordAgain()&&validateGroup(); 
if(flag){ 
return true; 
}else return false; 
}

```html

<div class="warp"> 
<h1>新用户注册</h1>
<form action="/myproject/admin/addUser" name="myform" onsubmit="return validateForm()">
<div class="form-warp">  
 <ul>
  <li>用户名称:<input class="input" type="text" name="userName" placeholder="请输入..." onblur="validateUsername()"/></li>
  <li>密 码:<input class="input" type="password" name="password" id="password" placeholder="请输入..." onblur="validatePassword()"/></li>
  <li>确认密码:<input class="input" type="password" name="psw" id="psw" placeholder="请输入..." onblur="validatePasswordAgain()"/></li>
  <li>真实姓名:<input class="input" type="text" name="realName" placeholder="请输入..."/></li>
  <li>分 组:<select name="group.id" id="select" onblur="validateGroup()">
     <option value="NONE">请选择...</option>
     <#list groups as group>
      <option value="${group.id}">${group.name}</option>
     </#list>
     </select>
  </li>
  <li><input type="submit" value="提交" id="button"/></li>
 </ul>
<ul class="validate">
 <li id="uname"></li>
 <li id="upss"></li>
 <li id="upssa"></li>
 <li id="groupID"></li>
</ul>
</div>
</form>
</div>
“`

总结

以上所述是小编给大家介绍的使用JavaScript进行表单校验功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript修改css样式style
Apr 15 Javascript
javascript 写类方式之十
Jul 05 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
Sep 29 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
May 31 Javascript
ExtJS自定义主题(theme)样式详解
Nov 18 Javascript
node.js中实现同步操作的3种实现方法
Dec 05 Javascript
jQuery实现网页抖动的菜单抖动效果
Aug 07 Javascript
使用javaScript动态加载Js文件和Css文件
Oct 24 Javascript
JS遍历对象属性的方法示例
Jan 10 Javascript
JS实现简单短信验证码界面
Aug 07 Javascript
React diff算法的实现示例
Apr 20 Javascript
了解javascript中let和var及const关键字的区别
May 24 Javascript
SpringMVC简单整合Angular2的示例
Jul 31 #Javascript
vue.js声明式渲染和条件与循环基础知识
Jul 31 #Javascript
在ABP框架中使用BootstrapTable组件的方法
Jul 31 #Javascript
knockoutjs模板实现树形结构列表
Jul 31 #Javascript
本地存储localStorage用法详解
Jul 31 #Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
Jul 31 #Javascript
ES6新特性:使用export和import实现模块化详解
Jul 31 #Javascript
You might like
PHP漏洞全解(详细介绍)
2012/11/13 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
酒后驾驶检讨书
2014/01/27 职场文书
中学生的1000字检讨书
2014/10/11 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
详解MySQL 联合查询优化机制
2021/05/10 MySQL
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫