使用原生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 相关文章推荐
页面元素绑定jquery toggle后元素隐藏的解决方法
Mar 27 Javascript
javascript 动态创建表格
Jan 08 Javascript
JavaScript iframe数据共享接口实现方法
Jan 06 Javascript
javascript基础知识
Jun 07 Javascript
javascript实现抽奖程序的简单实例
Jun 07 Javascript
基于原生JS实现图片裁剪
Aug 01 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
Nov 30 Javascript
浅谈sass在vue注意的地方
Aug 10 Javascript
vue返回上一页面时回到原先滚动的位置的方法
Dec 20 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
Apr 02 Javascript
在vue中使用jsx语法的使用方法
Sep 30 Javascript
vue实现放大镜效果
Sep 17 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 get_meta_tags()函数
2014/05/12 PHP
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
TensorFlow实现创建分类器
2018/02/06 Python
python和shell获取文本内容的方法
2018/06/05 Python
python使用tornado实现简单爬虫
2018/07/28 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
python3 map函数和filter函数详解
2019/08/26 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
会计电算化专业毕业生自荐信
2013/12/20 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
商务英语专业求职信范文
2014/01/28 职场文书
企业后勤岗位职责
2014/02/28 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
服务器nginx权限被拒绝解决案例
2022/09/23 Servers