JS添加删除一组文本框并对输入信息加以验证判断其正确性


Posted in Javascript onApril 11, 2013

在做项目中遇到这样一个问题,就是我们需要添加几组数据到数据库,但是具体几组数据不确定,有客户来填写,比如我们需要添加打折策略,可能个策略有很多组方案,比如“满100打5折,满200打4折,满500打3折”等等,这是作为一组方案来执行的,但是并不确定一组方案中有几个子方案,所以,这里我用JS进行添加删除子方案,并要对方案输入的正确性加以判断,并且通过json传输写入数据库,这里我们主要写如果添加删除一组子项目和如果给每个文本框添加验证。

动态添加一组文本框:

var countTable = 0; 
//添加表格行 
addTable = function () { 
//获得表格 
var tab1 = document.getElementById("discountTable"); 
//table中所有的单元格数 
// cell = tab1.cells.length; 
//table 中行数 
n = tab1.rows.length; 
//table 中的列数 
//cell = cell / n; 
//向table中加入行 
r = tab1.insertRow(n); 
//添加当前行的每个单元格 
r.insertCell(0).innerHTML = '消费满X元: <input type=\'text\' style="width:150px;" onblur="terifyNumFirst(this)" class =\'groupFirst\' /><label class="veritifyMessage" style="display:none; color: #F00;font-size:16px; width:10px;float:right">*</label>'; 
r.insertCell(1).innerHTML = '打折率:<input type=\'text\' style="width:150px;" onblur="terifyNumSecond(this)" class =\'groupSecond\' /><label class="veritifyMessage" style="display:none;font-size:16px ;color: #F00; width:10px;float:right">*</label>'; 
r.insertCell(2).innerHTML = '<input type="image" name="imageField" id="'+countTable+'" onclick="deleteTable(this)" src="../images/closeStraty.jpg" />'; 
countTable = countTable + 1; 
}

注:
1.这里的countTable应为全部变量,用于对每一行进行标识,这样就确定每一行都是不同的,防止删除一行后ID重复的情况。
2.在这里为每一个text添加了焦点离去事件,即当焦点离开当前文本框时,我们需要对其严重是否符合输入。
3.在文本框后加了label,作为验证控件,当我们输入的文本不符合要求时,该label可见。
删除任意一行:
//删除当前行 
deleteTable = function (el) { 
// alert( el.id); 
//获取table 
var tab1 = document.getElementById("discountTable"); 
//循环判断需要删除的行 
for (i = 0; i < tab1.rows.length; i++) { 
//获取行的ID 
var deleteValue = tab1.rows[i].cells[2].childNodes[0].id; 
//循环获得每行的id与当前点击的ID比较,相同则删除 
if (el.id == deleteValue) { 
tab1.deleteRow(i); 
break; 
} 
} 
}

首先我们需要是或许要删除行的位置,这里就需要通过循环对比表格中哪一行是当前点中行,然后进行删除。
如何显示和隐藏验证控件(当焦点离去文本时,对文本进行判断):
//验证第一条信息输入是否合法 
terifyNumFirst = function (objText) { 
var terifyText = objText.value; 
//信息不能为空 
if (terifyText== "") 
{ 
objText.parentNode.children[1].style.display="block"; 
return; 
} 
//信息必须为数字 
if (isNaN(terifyText)) 
{ 
objText.parentNode.children[1].style.display = "block"; 
return; 
} 
objText.parentNode.children[1].style.display = "none"; 
}

当全部信息需要写入时,我们同样需要进行判断,如果有不合法的提示,否则生成datatable返回,具体如何往后台传输,会在下篇博客中写道。
//生成DataTable对象 
function generateDtb() { 
//判断数据是否可以写入标志,false为可以写入,true为不可以写入 
var flag = false; 
//获取table 
var tab1 = document.getElementById("discountTable"); 
//第一列数据 
var firstGroup = document.getElementsByClassName("groupFirst"); 
//第二列数据 
var secondGroup = document.getElementsByClassName("groupSecond"); 
//判断验证信息是否合法 
var veritify = document.getElementsByClassName("veritifyMessage"); 
// alert(secondGroup.item(0).value); 
//判断是否为空 
for (var i = 0; i < firstGroup.length; i++) 
{ 
//判断第一列数据是否为空,为空则显示提示 
if (firstGroup[i].value == "") 
{ 
veritify[(i * 2)].style.display = "block"; 
flag = true; 
} 
//判断第二列数据是否为空,为空则显示提示 
if (secondGroup[i].value == "") 
{ 
veritify[(i * 2 + 1)].style.display = "block"; 
flag = true; 
} 
} 
for (var i = 0; i < veritify.length; i++) 
{ 
if (veritify[i].style.display == "block") 
{ 
flag = true; 
} 
} 
// alert(veritify.length); 
//如何输入信息都合法,则整理当前信息为数组,返回该信息进行处理。 
if (flag == false) { 
//写入 
var txtName = document.getElementById("txtName").value; 
//创建数组 
var dtb = new Array(); 
//通过循环把数据写入到数组并返回 
for (var i = 0; i < firstGroup.length; i++) { 
var row = new Object(); 
row.Name = txtName; 
row.fullMoney = firstGroup[i].value; 
row.discount = secondGroup[i].value; 
dtb.push(row); 
} 
return dtb; 
}

这里的验证也相对比较简单,只是验证文本框输入是否为空和是否为数字,用一个label的显示和隐藏来判断是否符合输入,在下篇文章中会写道如何把数组传入后台并写入数据库。
Javascript 相关文章推荐
JavaScript初学者应注意的七个细节小结
Jan 30 Javascript
javascript实现控制文字大中小显示
Apr 28 Javascript
原生JS实现平滑回到顶部组件
Mar 16 Javascript
jQuery插件passwordStrength密码强度指标详解
Jun 24 Javascript
web 前端常用组件之Layer弹出层组件
Sep 22 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
Jan 16 Javascript
使用Vue构建可重用的分页组件
Mar 26 Javascript
Vue axios设置访问基础路径方法
Sep 19 Javascript
Vue路由之JWT身份认证的实现方法
Aug 26 Javascript
node+multer实现图片上传的示例代码
Feb 18 Javascript
JS array数组检测方式解析
May 19 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
Feb 05 Javascript
如何使用json在前后台进行数据传输实例介绍
Apr 11 #Javascript
在javascript中对于DOM的加强
Apr 11 #Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
Apr 11 #Javascript
在javascript中关于节点内容加强
Apr 11 #Javascript
onkeydown事件解决按回车键直接提交数据的需求
Apr 11 #Javascript
jQuery实用基础超详细介绍
Apr 11 #Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
Apr 11 #Javascript
You might like
用PHP和ACCESS写聊天室(二)
2006/10/09 PHP
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
复习Python中的字符串知识点
2015/04/14 Python
浅析Python中的多重继承
2015/04/28 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
python3.x实现发送邮件功能
2018/05/22 Python
Python操作MySQL数据库的方法
2018/06/20 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
生产部经理岗位职责
2013/12/16 职场文书
洗煤厂厂长岗位职责
2014/01/03 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
关于安全的广播稿
2014/10/23 职场文书
2014年财务科工作总结
2014/11/11 职场文书
放飞理想主题班会
2015/08/14 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书