在做项目中遇到这样一个问题,就是我们需要添加几组数据到数据库,但是具体几组数据不确定,有客户来填写,比如我们需要添加打折策略,可能个策略有很多组方案,比如“满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. android 30 下拉列表框:ArrayAdapter和Spinner.

    package com.sxt.day05_04; import android.os.Bundle; import android.app.Activity; import android.cont ...

  2. Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序:Comparator)

    1. 比较器排序(定制排序) 前面我们说到的TreeSet的自然排序是根据集合元素的大小,TreeSet将它们以升序排列. 但是如果需要实现定制排序,比如实现降序排序,则要通过比较器排序(定制排序)实 ...

  3. Java——(七)Map之HashMap和Hashtable实现类

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Map Map用于具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的ke ...

  4. 咱也玩玩Wordpress

    博客暂时转移到了 ->  www.zhyfzy.ga 域名改成.com啦 -> www.zhyfzy.com

  5. spring 定时任务的 执行时间设置规则

    单纯针对时间的设置规则org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行时间,只需要设置其cronExpressio ...

  6. codevs 2149 矩形周长(暴力扫描线)

    /* 暴力应该很好理解 不多说了 至于线段树维护的嘛 还没看懂 哪天突然想明白了在写吧 */ #include<iostream> #include<cstdio> #incl ...

  7. android 定时请求(两种实现方式)

    方式一: Handler + Runnable (借鉴网址:http://stackoverflow.com/questions/6207362/how-to-run-an-async-task-fo ...

  8. 【转】《我的WCF之旅》博文系列汇总

    转自:http://www.cnblogs.com/artech/archive/2007/09/15/893838.html WCF是构建和运行互联系统的一系列技术的总称,它是建立在Web Serv ...

  9. WHU 1568 Product (DP、逆元)

    题意: 定义f(x) 为数x的所有数字的乘积. 求满足f(k)=f(x)的不同的不含数字1的k的个数. x的长度小于50. 不超过1000组数据. Solution: 由于函数是乘积的形式,可以由质因 ...

  10. OC文件操作(1)

    1.文件的浅度遍历与深度遍历: //NSFileManager * fm = [[NSFileManager alloc]init];//创建文件管理器 //第一步创建一个文件管理器 NSError ...