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 相关文章推荐
[原创]网络复制内容时常用的正则+editplus
Nov 30 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
Oct 14 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
Mar 05 Javascript
JavaScript中的Object对象学习教程
May 20 Javascript
Angularjs 制作购物车功能实例代码
Sep 14 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
vuejs使用FormData实现ajax上传图片文件
Aug 08 Javascript
微信小程序实现之手势锁功能实例代码
Jul 19 Javascript
JavaScript实现小球沿正弦曲线运动
Sep 07 Javascript
JavaScript中this的全面解析及常见实例
May 14 Javascript
vue 中的 render 函数作用详解
Feb 28 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中$_SERVER的详细参数与说明
2008/07/29 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
python多线程http下载实现示例
2013/12/30 Python
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
Python实现二分查找算法实例
2015/05/26 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
pyspark给dataframe增加新的一列的实现示例
2020/04/24 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
台湾家适得:Homeget
2019/02/11 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
2014党员民主评议个人总结
2014/09/10 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS