使用原生javascript创建通用表单验证——更锋利的使用dom对象


Posted in Javascript onSeptember 13, 2011

首先看下效果,没什么特别,呵呵!

使用原生javascript创建通用表单验证——更锋利的使用dom对象
调用的代码呢,则是相当简单,不需要创建其他的Label或者span标签,脚本将自动生成:

<input type="text" id="txt1" onkeyup="checkResult(this.value == '', 'txt1', ' *这里不能为空喔!')" />

接下来我们看下这个checkResult这个函数,checkCondition参数表示判断条件,当条件为true时显示提示信息;showAfterId参数为创建的显示提示信息的标签之前的元素ID,在这里我们在input后面创建一个span来显示提示信息,因而 传入的参数值为当前input的ID“txt1”;最后一个参数为显示的文字,这个就不用??铝恕
//验证不能为空展示提示信息 
function checkResult(checkCondition, showAfterId, showMsg) { 
var showLabelId = showAfterId + "showMsg"; 
if (checkCondition) { 
if (document.getElementById(showLabelId)) { 
document.getElementById(showLabelId).innerHTML = showMsg; 
} else { 
createShowElement(showAfterId, showLabelId, "color:red", showMsg, 'span'); 
} 
} else if (!checkCondition) { 
if (document.getElementById(showLabelId)) 
document.getElementById(showLabelId).innerHTML = ''; 
} 
}

好,最后我们来看这个“createShowElement(currentId, elementId, style, showMsg, tagName)”函数:currentId即当前标签的ID;elementId为创建的标签的ID;style为创建的标签的样式,按照样式的写法即可;showMsg不讲了;tagName为创建的标签名,如label或者span等。
//创建展示提示信息的dom 
function createShowElement(currentId, elementId, style, showMsg, tagName) { 
if (!tagName) tagName = 'label'; 
var currentDom = document.getElementById(currentId); 
var showMsgDom = document.createElement(tagName); 
//showMsgDom.setAttribute("style", "color:" + textColor + ";"); 
if (style) 
showMsgDom.setAttribute("style", style); 
showMsgDom.setAttribute("id", elementId); 
showMsgDom.innerHTML = showMsg; 
currentDom.parentNode.insertBefore(showMsgDom, currentDom.nextSibling); 
}

仅供交流,欢迎大家提出指点,渴望宝贵的意见。个人觉得,即使是写简单的脚本验证程序,也应该尽量遵循面向对象的思想,并且在可扩展与效率上追寻一个协调的点,既不影响效率,同时让我们写的任何程序具有更高的可扩展性,这点思路其实不难,但是经常被很多初级程序员忽略。
Javascript 相关文章推荐
JsEasy简介 JsEasy是什么?与下载
Mar 07 Javascript
jquery checkbox全选、取消全选实现代码
Mar 05 Javascript
javascript面向对象之Javascript 继承
May 04 Javascript
javascript跨域刷新实现代码
Jan 01 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
Jan 29 Javascript
深入理解js promise chain
May 05 Javascript
jQuery遮罩层实例讲解
May 11 jQuery
ES6深入理解之“let”能替代”var“吗?
Jun 28 Javascript
Vue实现一个返回顶部backToTop组件
Jul 25 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
React手稿之 React-Saga的详解
Nov 12 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
Apr 13 Javascript
ie下动态加态js文件的方法
Sep 13 #Javascript
使用Json比用string返回数据更友好,也更面向对象一些
Sep 13 #Javascript
TextArea不支持maxlength的解决办法(jquery)
Sep 13 #Javascript
JQuery与JSon实现的无刷新分页代码
Sep 13 #Javascript
js Event对象的5种坐标
Sep 12 #Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
Sep 12 #Javascript
腾讯UED 漂亮的提示信息效果代码
Sep 12 #Javascript
You might like
关于初学PHP时的知识积累总结
2013/06/07 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
深入探究node之Transform
2017/07/20 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
vue组件生命周期详解
2017/11/07 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
Python有序字典简单实现方法示例
2017/09/28 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
python如何实现复制目录到指定目录
2020/02/13 Python
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
《鹬蚌相争》教学反思
2014/04/22 职场文书
骨干教师考核方案
2014/05/09 职场文书
公务员政审材料
2014/12/23 职场文书
放射科岗位职责
2015/02/14 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
详解Laravel制作API接口
2021/05/31 PHP