`

js校验表格中两个单元格之间的关系

 
阅读更多

目的是为了校验table中两个单元格之间的平衡关系,例如大于小于等。

形式为jquery插件

/**
 * @author zhangtan
 * @email ztreal@gmail.com
 * @since  2010-10-21
 * 校验页面平衡关系
 * @version 1.0.0(2010-10-21)
 * @jquery  1.3.2
 */
(function($) {
    //基本参数  校验提示文字
    /** $.fn.print.default = {
     greater: "greater than"
     };

     // 需要校验的内容参数传入
     *   var valicontent=new Array({c1tr:0,c1td:1,c2tr:0,c2td:3,symbol:'<'},{c1tr:1,c1td:1,c2tr:1,c2td:3,symbol:'<'},{c1tr:2,c1td:'1+3',c2tr:2,c2td:5,symbol:'<'});
     $("#test").check(valicontent);  **/
    $.fn.check = function(options) {
        ///<summary>
        /// validate div table cell 之间的平衡关系
        ///</summary>
        var va1namelist = '';
        var va1 = 0;
        var va2 = "";
        var va2name = "";
        var symbol = "";
        var error = [];
        $("#jsshowerror").empty();
        for (var i = 0; i < options.length; i++) {
            //var opts = $.extend({}, $.fn.check.defaults, options);
            var temptdlist = options[i].c1td.toString().split('+');
            if (options[i].c1td.toString().indexOf('+') > -1) {

                for (var ii = 0; ii < temptdlist.length; ii++) {
                    va1 = Number(va1) + Number($(this).find("tr").eq(options[i].c1tr).children("td").eq(temptdlist[ii]).find("input[type='text'],select").val());
                    va1namelist = va1namelist + '加' + $(this).find("tr").eq(options[i].c1tr).children("td").eq(temptdlist[ii] - 1).html();
                }
                va1namelist = va1namelist.substring(1, va1namelist.length);
                va2 = $(this).find("tr").eq(options[i].c2tr).children("td").eq(options[i].c2td).find("input[type='text'],select").val();
                va2name = $(this).find("tr").eq(options[i].c2tr).children("td").eq(options[i].c2td - 1).html();
                symbol = options[i].symbol;
                if (eval(va1 + symbol + va2)) {
                    //alert("检验成功!");
                }
                else {
                      error[error.length]=  va1namelist + $.fn.check.defaults[symbol] + va2name;
                    //alert(va1namelist + $.fn.check.defaults[symbol] + va2name);
                }
            }
            else {
                va1 = $(this).find("tr").eq(options[i].c1tr).children("td").eq(options[i].c1td).find("input[type='text'],select").val();
                var va1name = $(this).find("tr").eq(options[i].c1tr).children("td").eq(options[i].c1td - 1).html();
                va2 = $(this).find("tr").eq(options[i].c2tr).children("td").eq(options[i].c2td).find("input[type='text'],select").val();
                va2name = $(this).find("tr").eq(options[i].c2tr).children("td").eq(options[i].c2td - 1).html();
                symbol = options[i].symbol;
                if (eval(va1 + symbol + va2)) {
                    //alert("检验成功!");
                }
                else {
                    error[error.length]=  va1name + $.fn.check.defaults[symbol] + va2name;
                   // alert(va1name + $.fn.check.defaults[symbol] + va2name);
                }
            }
        }
        if($("#jsshowerror").length>=1){
            var errorhtml="";
            for(var i =0;i<error.length;i++){
                errorhtml = errorhtml+ "<div>"+error[i]+"</div>";
            }
              $("#jsshowerror").append(errorhtml);
        }
    };

    //校验弹出的提示框
    $.fn.check.defaults = {
        '>': '应大于',
        '<': '应小于'
    };
})(jQuery);

使用范例为

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>  
	<meta http-equiv="Content-Type" content="text/html; charset=gbk"> 
	<title>校验测试</title> 
 <script type="text/javascript" src="../common/js/jquery-1.4.2.min.js"></script> 
 <script type="text/javascript" src="../common/js/jquery.valipingmeng.js"></script> 
	<script type="text/javascript"> 
	
	</script> 
	<style type="text/css">
	#jsshowerror{
        color:red;
    }
	</style>
	
<script type="text/javascript"> 
	$(function() { 
	$("#check").click(function(){
		var valicontent=new Array({c1tr:0,c1td:1,c2tr:0,c2td:3,symbol:'<'},{c1tr:1,c1td:1,c2tr:1,c2td:3,symbol:'<'},{c1tr:2,c1td:'1+3',c2tr:2,c2td:5,symbol:'<'});
		$("#test").check(valicontent); 
	})
	});
 

</script> 
</head> 
<body >
<div id="jsshowerror"></div>
<input type="button" id="check" value="校验"></input>
  <table id="test">
  	<tr>
  		<td>年龄1</td>
		<td><input type="text"  value="11"/></td>
		<td>年龄2</td>
		<td><input type="text"  value="22"/></td>
  	</tr>
	  	<tr>
  		<td>年龄11</td>
		<td><input type="text"  value="11"/></td>
		<td>年龄22</td>
		<td><select>
			<option>10</option>
			<option>20</option>
		</select></td>
  	</tr>
	<tr>
  		<td>数字1</td>
		<td><input type="text"  value="11"/></td>
		<td>数字2</td>
		<td><select>
			<option>10</option>
			<option>20</option>
		</select></td><td>合计</td>
	   <td><input type="text"  value="33"/></td>
  	</tr>
  </table>
  </body>
</html>
 
分享到:
评论

相关推荐

    Layui数据表格判断编辑输入的值,是否为我需要的类型详解

    例如,可以设置两个if条件: 1. 检查用户输入的值是否大于库存量。如果大于库存,提示用户并回滚到编辑前的值。 2. 检查用户输入的值是否为非整数,如字母、符号或空字符串。如果是,同样提示用户并恢复原值。 在...

    vxe-table-v2.9.24_表格组件_Table_

    **vxe-table-v2.9.24:Vue.js中的高效...通过这两个文件,开发者可以深入了解vxe-table的内部实现和如何在项目中集成使用。总体来说,vxe-table是一个功能全面、性能卓越的表格组件,能够满足大部分Web应用的表格需求。

    javascript Table 中2个列(TD)的交换实现代码

    ### JavaScript 实现表格中两个TD元素的交换 在网页开发中,经常需要对HTML表格进行动态操作,例如调整单元格的位置、改变数据等。本文将详细介绍如何使用JavaScript来实现表格中两个`&lt;td&gt;`元素的位置交换。 #### ...

    el-table树形表格表单验证(列表生成序号)

    在本文中,我们将深入探讨如何在使用Element Plus的`el-...而`el-form`和`el-form-item`则提供了对表格内每个单元格的验证支持,确保数据输入的有效性。结合这两个方面,可以构建出高效且健壮的树形表格表单验证系统。

    vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例

    在介绍如何使用Vue.js结合Element UI实现点击编辑表格某一行时将内容填入表单的示例之前,首先需要了解几个核心概念: 1. Vue.js:它是一个用于构建用户界面的渐进式JavaScript框架,以数据驱动和组件化的思想设计...

    《JavaScript实例精通》[源代码]

    4_5.htm 合并两个数组。 4_6.htm 创建多维数组。 4_7.htm 数组排序。 第5章(\5) 示例描述:JavaScript快速处理日期时间的操作。 5_1.htm 获取当前日期并显示在HTML页中。 5_2.htm 分别获取当前时间的...

    查询绑定数据岛的表格中的文本并修改显示方式的js代码

    5. **统计匹配总数**:统计所有单元格中匹配关键字的总数,并通过弹窗展示。 ##### 2.2 函数`encode`与`decode` 这两个函数分别用于对字符串进行编码和解码操作,确保字符串中的HTML特殊字符不会影响到正常的文本...

    JavaScript实例精通

    4_5.htm 合并两个数组。 4_6.htm 创建多维数组。 4_7.htm 数组排序。 第5章(\5) 示例描述:JavaScript快速处理日期时间的操作。 5_1.htm 获取当前日期并显示在HTML页中。 5_2.htm 分别获取当前时间的...

    用户注册常用javascript代码

    具体实现是调用了`IsDigit()`和`IsAlpha()`两个辅助函数,分别用于检测字符是否为数字和字母。只有当用户名全部由字母和数字组成时,才认为校验通过。 2. 邮箱格式校验:`chkEmail()`函数通过使用正则表达式来校验...

    常用的JS,web开发有用哦

    - 计算两个日期之间的差值。 ##### 1.44 Enter移到下一个输入框 - 当用户在输入框中按下回车键时,焦点自动转移到下一个输入框。 ##### 1.45 得到上传文件类型 - 获取用户上传文件的类型。 ##### 1.46 表格文字...

    easyui-datagrid-rowediting

    RowEditing功能的前端实现主要包括两个部分:JavaScript和CSS。JavaScript主要负责处理用户交互,如点击编辑按钮触发编辑模式,保存按钮提交更改,以及取消按钮恢复原始数据。CSS则用于美化编辑状态下的行,例如...

    帆软初级证书题库及答案

    35. 斜线分隔内容:在单元格中添加斜线时,通常使用"/"或"|"作为内容的分隔符。 36. 参数引用符号:参数引用通常使用"${}"表示,绝对定位可能使用"$!"。 37. 字符数组解析:使用逗号分割字符串可以生成数组。 38....

    JSP中使用JavaScript动态插入删除输入框实现代码

    输入框通过innerHTML属性直接写入到表格单元格中,这样就可以在页面上看到动态生成的输入框了。具体代码如下: ```javascript function addrows() { var len = optionlist.rows.length; // 得到table的行数 var ...

    导入excel,处理合并表头、复杂表头、多行表头

    asp.net 导入excel时,处理合并表头、复杂表头、多行表头 1.解决复杂表头的Excel导入。可以解决任何复杂的表头。 2.导入时,显示请稍后。。。提醒框,完毕后会自动隐藏 3.全面扫描Excel数据,将所有异常详细信息写入...

    vue实现简单的日历效果

    在`drawTable`方法中,代码首先定义了一个基础的星期日到星期六的表格头部,然后通过两个嵌套的for循环来生成表格的行和列。代码中使用了模板字符串来构建HTML代码,这是一种ES6+的语法,允许通过字符串插值的方式...

    非常不错的javascript 图片慢慢下层效果

    这两个变量是整个渐变效果的核心数据结构,它们帮助我们跟踪当前正在处理的DOM元素以及对应的定时器。 ##### 2.2 函数定义 ```javascript function nereidFade(object, destOp, rate, delta) { // ... } ``` 此...

    WEB应用组件开发指南

    在WEB应用开发过程中,对于JavaScript原生类型的扩展是提高开发效率和代码可读性的有效手段之一。以下是《WEB应用组件开发指南》中提及的一些基本类型扩展方法: **1.1.1 String的扩展** - **`trim`** 方法用于...

    vue 实现超长文本截取,悬浮框提示

    文章中提到了ElementUI和Vuetable,这两个UI框架提供了丰富的组件和指令来实现复杂界面元素的快速构建。例如,ElementUI中的`&lt;el-table&gt;`组件就是用于构建表格的组件,该组件可以通过设置`show-overflow-tooltip`...

Global site tag (gtag.js) - Google Analytics