使用原生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 相关文章推荐
javascript 事件处理、鼠标拖动效果实现方法详解
May 11 Javascript
JS 添加千分位与去掉千分位的示例
Jul 11 Javascript
jQuery实现下滑菜单导航效果代码
Aug 25 Javascript
JavaScript操作URL的相关内容集锦
Oct 29 Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 Javascript
Bootstrap禁用响应式布局的实现方法
Mar 09 Javascript
微信小程序搜索组件wxSearch实例详解
Jun 08 Javascript
关于在mongoose中填充外键的方法详解
Aug 14 Javascript
ES6基础之解构赋值(destructuring assignment)
Feb 21 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
May 07 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
Sep 27 Javascript
记一次vue跨域的解决
Oct 21 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中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
javascript 特殊字符串
2009/02/25 Javascript
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
python3判断IP地址的方法
2021/03/04 Python
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
护士试用期自我鉴定
2014/02/08 职场文书
迎新晚会主持词
2014/03/24 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
新闻稿怎么写
2015/07/18 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
MySQL七大JOIN的具体使用
2022/02/28 MySQL
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技