使用原生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 相关文章推荐
特殊字符、常规符号及其代码对照表
Jun 26 Javascript
JQuery Dialog的内存泄露问题解决方法
Jun 18 Javascript
分享27款非常棒的jQuery 表单插件
Mar 28 Javascript
jquery 之 $().hover(func1, funct2)使用方法
Jun 14 Javascript
javascript的原生方法获取数组中的最大(最小)值
Dec 19 Javascript
Javascript中call的两种用法实例
Dec 13 Javascript
jquery实现滑动特效代码
Aug 10 Javascript
解析ajaxFileUpload 异步上传文件简单使用
Dec 30 Javascript
Node.js 8 中的重要新特性
Jun 28 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
Sep 03 Javascript
vue实现移动端省市区选择
Sep 27 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
May 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
php获取301跳转URL简单实例
2013/12/16 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
Python在线运行代码助手
2016/07/15 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
python numpy中cumsum的用法详解
2019/10/17 Python
python with语句的原理与用法详解
2020/03/30 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
生物技术专业研究生自荐信
2013/09/22 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
食品药品安全责任书
2015/05/11 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android