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

动态添加一组文本框:

var countTable = ;
//添加表格行
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().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().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().innerHTML = '<input type="image" name="imageField" id="'+countTable+'" onclick="deleteTable(this)" src="../images/closeStraty.jpg" />'; countTable = countTable + ;
}

注:

1.这里的countTable应为全部变量,用于对每一行进行标识,这样就确定每一行都是不同的,防止删除一行后ID重复的情况。

2.在这里为每一个text添加了焦点离去事件,即当焦点离开当前文本框时,我们需要对其严重是否符合输入。

3.在文本框后加了label,作为验证控件,当我们输入的文本不符合要求时,该label可见。

删除任意一行:

//删除当前行

deleteTable = function (el) {

    // alert( el.id);

    //获取table

    var tab1 = document.getElementById("discountTable");

    //循环判断需要删除的行

    for (i = ; i < tab1.rows.length; i++) {

       //获取行的ID

        var deleteValue = tab1.rows[i].cells[].childNodes[].id;

        //循环获得每行的id与当前点击的ID比较,相同则删除

        if (el.id == deleteValue) {

            tab1.deleteRow(i);

            break;

        }

    }

}

首先我们需要是或许要删除行的位置,这里就需要通过循环对比表格中哪一行是当前点中行,然后进行删除。

如何显示和隐藏验证控件(当焦点离去文本时,对文本进行判断):

    //验证第一条信息输入是否合法
terifyNumFirst = function (objText) {
var terifyText = objText.value;
//信息不能为空
if (terifyText== "")
{
objText.parentNode.children[].style.display="block";
return;
}
//信息必须为数字
if (isNaN(terifyText))
{
objText.parentNode.children[].style.display = "block";
return;
}
objText.parentNode.children[].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 = ; i < firstGroup.length; i++)
{
//判断第一列数据是否为空,为空则显示提示
if (firstGroup[i].value == "")
{
veritify[(i * )].style.display = "block";
flag = true;
}
//判断第二列数据是否为空,为空则显示提示
if (secondGroup[i].value == "")
{
veritify[(i * + )].style.display = "block";
flag = true;
}
}
for (var i = ; 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 = ; 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的显示和隐藏来判断是否符合输入,在下篇文章中会写道如何把数组传入后台并写入数据库。

JS添加删除一组文本框并对输入信息加以验证的更多相关文章

  1. ASP.NET c# textbox 正则表达式 文本框只允许输入数字(验证控件RegularExpressionValidator )

    <input type="text" name="test" onKeyUp="test1.value=(this.value=this.val ...

  2. Java 添加、读取、删除Excel文本框

    本文介绍通过Java程序添加文本框到Excel的方法,添加文本框时,可以添加文本.设置文本方向.文本对齐方式.设置文本框大小.位置.填充色/填充图片.文本框旋转角度.文本框名称.可选文本.文本框隐藏或 ...

  3. JS实现动态提示文本框可输入剩余字数(类似发表微博数字提示)

    一.实现效果: 为了更直观的体现用户在文本框输入文本时能看到自己输入了多少字,项目中需要通过判断提示文本框剩余可输入字数. html & JS: <div> <textare ...

  4. C# 使用js正则表达式,让文本框只能输入数字和字母,最大长度5位

    使用js正则表达式,让文本框只能输入数字和字母,最大长度5位,只需要加个onkeyup事件,即可简单实现 <asp:TextBox ID="txtBegin" runat=& ...

  5. (三)在js(jquery)中获得文本框焦点和失去焦点的方法

    在js(jquery)中获得文本框焦点和失去焦点的方法   文章介绍两个方法和种是利用javascript onFocus onBlur来判断焦点和失去焦点,加一种是利用jquery $(" ...

  6. js控制文本框仅仅能输入中文、英文、数字与指定特殊符号

    JS 控制文本框仅仅能输入数字 <input onkeyup="value=value.replace(/[^0-9]/g,'')"onpaste="value=v ...

  7. js统计文本框剩余可输入字数

    js统计文本框剩余可输入字数 <html><head runat="server"> <title></title> <scr ...

  8. js实现删除确认提示框

    js实现删除确认提示框 一.实例描述 防止用户小心单击了“删除”按钮,在用户单击“删除”按钮后,给出一个提示,让用户确认此次操作是否正确. 二.效果 三.代码 <!DOCTYPE html> ...

  9. Java 获取、删除Word文本框中的表格

    本文介绍如何来获取Word文本框中包含的表格,以及删除表格. 程序测试环境包括: IDEA JDK 1.8.0 Spire.Doc.jar 注:jar导入,可通过创建Maven程序项目,并在pom.x ...

随机推荐

  1. Qt 学习之路 :视图代理

    与 Qt model/view 架构类似,在自定义用户界面中,代理扮演着重要的角色.模型中的每一个数据项都要通过一个代理向用户展示,事实上,用户看到的可视部分就是代理. 每一个代理都可以访问一系列属性 ...

  2. [转] 函数编程之闭包漫谈(Closure)

    在函数编程中经常用到闭包.闭包是什么,它是怎么产生的及用来解决什么问题呢.给出字面的定义 先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境).这个从字面上很难理解,特别对于一 ...

  3. Java基础知识强化之集合框架笔记26:LinkedList的特有功能

    1. LinkedList的特有功能: (1)添加功能  public  void  addFirst(Object   e)  public  void  addLast(Object   e) ( ...

  4. json 序列化的两种方式

    JavaScriptSerializer Serializer = new JavaScriptSerializer(); ResultData<EUserData> resultMode ...

  5. java验证码Captcha

    import java.awt.Color; import java.io.IOException; import java.util.Random; import javax.servlet.htt ...

  6. java移位运算的用途

    参考下面这篇文章 http://blog.csdn.net/gaowen_han/article/details/7163104 http://jinguo.iteye.com/blog/540150 ...

  7. sqlserver 时间 格式化

    0   或   100   (*)     默认值   mon   dd   yyyy   hh:miAM(或   PM)       1   101   美国   mm/dd/yyyy       ...

  8. Axiom3D学习日记 2.介绍SceneManager,SceneNode,Entity

    SceneManager(场景管理类) 所有出现在屏幕里的东西都受SceneManager管理(最好是这样),当你放置对象在场景里,SceneManager就会跟踪他们的位置,当你为场景创建一个相机, ...

  9. C#使用Process类调用外部程序(转)

    在程序开发中,一个程序经常需要去调用其他的程序,C#中Process类正好提供了这样的功能.它提供对本地和远程进程的访问并使您能够启动和停止本地系统进程.一.启动进程实例 Process myProc ...

  10. [转]Delphi调用cmd的两种方法

    delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hid ...