使用原生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 相关文章推荐
JS获取dom 对象 ajax操作 读写cookie函数
Nov 18 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
May 24 Javascript
用JS做的简单的可折叠的两级树形菜单
Sep 21 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
Jan 28 Javascript
jQuery树形下拉菜单特效代码分享
Aug 15 Javascript
JS 终止执行的实现方法
Nov 24 Javascript
Node.js和Express简单入门介绍
Mar 24 Javascript
详解vue-router 2.0 常用基础知识点之router-link
May 10 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
Mar 03 Javascript
深入webpack打包原理及loader和plugin的实现
May 06 Javascript
详解React 条件渲染
Jul 08 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
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
javascript 面向对象继承
2009/11/26 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
JS解析XML实例分析
2015/01/30 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
vue点击页面空白处实现保存功能
2019/11/06 Javascript
讲解python参数和作用域的使用
2013/11/01 Python
python中执行shell的两种方法总结
2017/01/10 Python
利用python求相邻数的方法示例
2017/08/18 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
给女儿的表扬信
2014/01/18 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
装修设计师求职信
2014/02/26 职场文书
英文自荐信常用句子
2014/03/26 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python