使用原生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 相关文章推荐
lib.utf.js
Aug 21 Javascript
jquery关于图形报表的运用实现代码
Jan 06 Javascript
js出生日期 年月日级联菜单示例代码
Jan 10 Javascript
js实现表格字段排序
Feb 19 Javascript
js返回前一页刷新本页重载页面
Jul 29 Javascript
jQuery中data()方法用法实例
Dec 27 Javascript
三种AngularJS中获取数据源的方式
Feb 02 Javascript
javascript设计模式之单体模式学习笔记
Feb 15 Javascript
AngularJs实现聊天列表实时刷新功能
Jun 15 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
Vue无限滑动周选择日期的组件的示例代码
Jul 18 Javascript
mpvue全局引入sass文件的方法步骤
Mar 06 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+dbfile开发小型留言本
2006/10/09 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
浅谈json_encode用法
2015/03/05 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
js中将具有数字属性名的对象转换为数组
2011/03/06 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
python实现从web抓取文档的方法
2014/09/26 Python
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
Python基于当前时间批量创建文件
2020/05/07 Python
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
String这个类型的class为何定义成final?
2012/11/13 面试题
大学生职业生涯规划书参考模板
2014/03/05 职场文书
应聘教师自荐书
2014/06/16 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
员工保密协议书
2014/09/27 职场文书
2014年实验室工作总结
2014/12/03 职场文书
导游词之舟山普陀山
2019/11/06 职场文书