使用原生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 相关文章推荐
完美解决IE低版本不支持call与apply的问题
Dec 05 Javascript
js类式继承的具体实现方法
Dec 31 Javascript
Flash图片上传组件 swfupload使用指南
Mar 14 Javascript
js实现带按钮的上下滚动效果
May 12 Javascript
删除javascript所创建子节点的方法
May 21 Javascript
详解JavaScript对W3C DOM模版的支持情况
Jun 16 Javascript
JavaScript中const、var和let区别浅析
Oct 11 Javascript
Angular实现购物车计算示例代码
Feb 21 Javascript
Node.js中DNS模块学习总结
Feb 28 Javascript
angularJS开发注意事项
May 26 Javascript
微信小程序上传文件到阿里OSS教程
May 20 Javascript
三种方式清除vue路由跳转router-link的历史记录
Apr 10 Vue.js
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
我的论坛源代码(八)
2006/10/09 PHP
php中变量及部分适用方法
2008/03/27 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
php生成无限栏目树
2017/03/16 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
toString()一个会自动调用的方法
2010/02/08 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
利用python获得时间的实例说明
2013/03/25 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
python——全排列数的生成方式
2020/02/26 Python
python实时监控logstash日志代码
2020/04/27 Python
详细分析Python垃圾回收机制
2020/07/01 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
小学生美德少年事迹
2014/02/02 职场文书
出生公证委托书
2014/04/03 职场文书
运动会方队口号
2014/06/07 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL