使用原生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打印网页部分内容的脚本
Nov 17 Javascript
Mootools 1.2教程 正则表达式
Sep 15 Javascript
JS实现转动随机数抽奖特效代码
Apr 16 Javascript
深入浅析Node.js 事件循环
Dec 20 Javascript
jQuery内容过滤选择器用法示例
Sep 09 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
Apr 20 Javascript
深入浅析var,let,const的异同点
Aug 07 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
Aug 20 Javascript
webpack4+react多页面架构的实现
Oct 25 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
Dec 06 Javascript
小程序红包雨的实现示例
Feb 19 Javascript
vue router 跳转时打开新页面的示例方法
Jul 28 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读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
深入讲解Java编程中类的生命周期
2016/02/05 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
数据管理员的自我评价分享
2013/11/15 职场文书
俄罗斯商务邀请函
2014/01/26 职场文书
租房协议书范文
2014/08/20 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书