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 相关文章推荐
ajax异步刷新实现更新数据库
Dec 03 Javascript
javascript中的if语句使用介绍
Nov 20 Javascript
js改变文章字体大小的实例代码
Nov 27 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
Jun 12 Javascript
javascript关于运动的各种问题经典总结
Apr 27 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
AngularJS入门教程之Select(选择框)详解
Jul 27 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
Sep 05 Javascript
详解Vue SPA项目优化小记
Jul 03 Javascript
JQuery常见节点操作实例分析
May 15 jQuery
Vue+Element实现表格编辑、删除、以及新增行的最优方法
May 28 Javascript
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
如何使用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函数
2011/05/31 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
实现获取http内容的php函数分享
2014/02/16 PHP
PHP闭包函数详解
2016/02/13 PHP
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
Python列表计数及插入实例
2014/12/17 Python
Python多线程和队列操作实例
2015/06/21 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
Pytorch之contiguous的用法
2019/12/31 Python
Python如何读写字节数据
2020/08/05 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
匡威英国官网:Converse英国
2018/12/02 全球购物
Footshop法国:购买运动鞋
2020/01/19 全球购物
中医药大学市场营销专业自荐信
2013/09/29 职场文书
幼教个人求职信范文
2013/12/02 职场文书
军人违纪检讨书
2014/02/04 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
县级文明单位申报材料
2014/05/23 职场文书
会计学习心得体会
2014/09/09 职场文书
施工安全保证书
2015/05/09 职场文书
联欢会开场白
2015/06/01 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers