zoukankan      html  css  js  c++  java
  • 基于layui,Jquery 表格动态编辑 设置 编辑值为 int 或者 double 类型及默认值

    首先先推荐大家在看这篇笔记时,阅读过我写的这篇 Layui表格编辑【不依赖Layui的动态table加载】

    阅读过上面那篇笔记之后呢,才能更好的理解我现在所要说的这个东西

    接下来废话不多说,上代码。

    怕各位懒得动手,直接整理了个案例,如有访问不了代码错误,请在评论区留言,有时间处理问题。

    <!DOCTYPE html>
    <html>
    
    	<head>
    		<meta charset="utf-8">
    		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    		<title>基于layui,Jquery 表格动态编辑 设置 编辑值为 int 或者 double 类型及默认值 案例</title>
    		<meta name="description" content="">
    		<meta name="viewport" content="width=device-width, initial-scale=1">
    		<link rel="stylesheet" href="https://heerey525.github.io/layui-v2.4.3/layui/css/layui.css" media="all">
    		<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    		<script src="http://blog.aigouzhushou.com/layui-v2.4.3/layui/layui.js"></script>
    			
    		<script>
    			// Author : userzf 、yirenipeng ; Upload Time: 2020/04/27 15:15 
    			//-----[Layui表格编辑(<td class="My_edit"></td>)] 2018-11-13
    			function Layui_edit() {
    				//数据可编辑
    				$(".My_edit").toggle(function() {
    					var text = $(this).html();
    					$(this).html('<input type="text" class="layui-input layui-table-edit" value="' + text + '">');
    					$(this).children("input").val("").focus().val(text);
    				}, function() {
    					$(this).html($(this).children("input").val());
    				})
    				//数据编辑失去焦点失效
    				$(".layui-table-edit").live("blur", function() {
    					var text = $(this).val();
    					$(this).parent().html(text);
    				})
    			}
    			//-----[Layui表格编辑END]
    
    			/**
    			 * 获取一个double值 
    			 * @param P_number 传入值【任意字符】
    			 * @param Defaults_val 【默认值】选参
    			 * @returns
    			 */
    			function set_double(val, Defaults_val) {
    				Defaults_val = Is_null(Defaults_val) == true ? Defaults_val : 1; //默认值为空时给 1
    				var reg_Tow = /^(?!0{2,})(?:d{1,9}(.d+)?|10{9})$/;
    				var map = {};
    				if(val != undefined && val != null && val.trim() != "") {
    					val = parseFloat(val);
    					val = toFixed(val, 2); //保留两位小数数据格式化
    					val = reg_Tow.test(val) ? val : Defaults_val; //单价
    					val = val == "0.00" ? Defaults_val : val;
    				} else { //默认单价
    					val = Defaults_val;
    				}
    				return val;
    			}
    
    			/**
    			 * 获取一个整数值 
    			 * @param P_number 传入值【任意字符】
    			 * @param Defaults_val 【默认值】选参
    			 * @returns
    			 */
    			function set_number(P_number, Defaults_val) {
    				Defaults_val = Is_null(Defaults_val) == true ? Defaults_val : 1; //默认值为空时给 1
    				var reg_Tow = /^(?!0{2,})(?:d{1,9}(.d+)?|10{9})$/;
    				if(P_number != undefined && P_number != null && P_number.trim() != "") {
    					P_number = parseInt(P_number);
    					P_number = reg_Tow.test(P_number) ? P_number : Defaults_val; //数量
    					P_number = P_number == "0" ? Defaults_val : P_number;
    				} else { //默认 值 赋值
    					P_number = Defaults_val;
    				}
    				return P_number;
    			}
    
    			/**
    			 * 基于layui,Jquery 表格动态编辑 设置 编辑值为 int 或者 double 类型
    			 * @param e_name 【选取元素的方式】如:.a 或 #a
    			 * @param type 获取数类型 int or double 
    			 * @param Defaults_val 默认值 选填
    			 * @returns
    			 * PS:最大长度 为 9 位字符
    			 */
    			function val_number(e_name, type, Defaults_val) {
    				//焦时获取元素 当前行,当前td
    				$("" + e_name + " input").live("focus", function(data) {
    					window["_parent"] = $(this).parent().parent();
    					window["_e"] = $(this).parent();
    				})
    
    				// 键盘按下过滤
    				$("" + e_name + " input").live("keyup", function(data) {
    					$(this).attr("maxlength", "9");
    					var value = num_value($(this).val()); //只能输入两位数小数和整数
    					$(this).val(value);
    				})
    				// 编辑文本框 失焦过滤
    				$("" + e_name + " input").live("blur", function(data) {
    					var _parent = window["_parent"];
    					var _this = window["_e"];
    					var val = _this.html();
    					if("int" == type.toLowerCase()) {
    						val = set_number(val, Defaults_val)
    					} else if("double" == type.toLowerCase()) {
    						val = set_double(val, Defaults_val)
    					}
    					//延迟赋值 【解决动态编辑赋值的bug】
    					setTimeout(function() {
    						_this.html(val);
    					}, 10);
    				})
    
    			}
    
    			/**
    			 * toFixed(四舍五入重写)
    			 * @param number
    			 * @param decimal
    			 * @returns
    			 */
    			function toFixed(number, decimal) {
    				decimal = decimal || 0;
    				var s = String(number);
    				var decimalIndex = s.indexOf('.');
    				if(decimalIndex < 0) {
    					var fraction = '';
    					for(var i = 0; i < decimal; i++) {
    						fraction += '0';
    					}
    					return s + '.' + fraction;
    				}
    				var numDigits = s.length - 1 - decimalIndex;
    				if(numDigits <= decimal) {
    					var fraction = '';
    					for(var i = 0; i < decimal - numDigits; i++) {
    						fraction += '0';
    					}
    					return s + fraction;
    				}
    				var digits = s.split('');
    				var pos = decimalIndex + decimal;
    				var roundDigit = digits[pos + 1];
    				if(roundDigit > 4) {
    					//跳过小数点
    					if(pos == decimalIndex) {
    						--pos;
    					}
    					digits[pos] = Number(digits[pos] || 0) + 1;
    					//循环进位
    					while(digits[pos] == 10) {
    						digits[pos] = 0;
    						--pos;
    						if(pos == decimalIndex) {
    							--pos;
    						}
    						digits[pos] = Number(digits[pos] || 0) + 1;
    					}
    				}
    				//避免包含末尾的.符号
    				if(decimal == 0) {
    					decimal--;
    				}
    				return digits.slice(0, decimalIndex + decimal + 1).join('');
    			}
    
    			/**
    			 * 判断是否为空值
    			 * @param val
    			 * @returns
    			 */
    			function Is_null(val) {
    				val = isNumber(val) == true ? val + "" : val; //如果是一个数字类型过滤成字符串
    				return val != undefined && val != null && val.trim() != "" && val != "undefined" && val != "null" ? true : false;
    			}
    
    			/**
    			 * obj 判断是否是一个数(number)
    			 * @param obj
    			 * @returns
    			 */
    			function isNumber(obj) {
    				return typeof obj === 'number' && !isNaN(obj);
    			}
    			/**
    			 * [只能输入数字和两位小数]
    			 * @param value
    			 * @returns
    			 * @data 2019-01-14
    			 */
    			function num_value(value) {
    				value = value.replace(/[^d.]/g, ""); //清除"数字"和"."以外的字符
    				value = value.replace(/^./g, ""); //验证第一个字符是数字
    				value = value.replace(/.{2,}/g, "."); //只保留第一个, 清除多余的
    				value = value.replace(".", "$#$").replace(/./g, "").replace("$#$", ".");
    				value = value.replace(/^(-)*(d+).(dd).*$/, '$1$2.$3'); //只能输入两个小数
    				return value;
    			}
    		</script>
    	</head>
    
    	<body>
    		<form class="layui-form PcScoring" action="" lay-filter="example" style="margin-top: 10px;">
    			<table class="layui-table" style="widtd: 100%; text-align: center; margin: auto;">
    				<tr>
    					<td style="text-align: center;">Int</td>
    					<td style="text-align: center;" class="int My_edit"></td>
    				</tr>
    				<tr>
    					<td style="text-align: center;">Double</td>
    					<td style="text-align: center;" class="Double My_edit"></td>
    				</tr>
    			</table>
    		</form>
    		<script>
    			$(function() {
    				$.ajaxSetup({
    					async: false
    				});
    				layui.use(['laydate', 'layer', 'form', 'util', 'table', 'element', 'flow'], function() {
    					var laydate = layui.laydate;
    					var flow = layui.flow;
    					var util = layui.util;
    					var laypage = layui.laypage;
    					var form = layui.form;
    
    					//PS:注意这里的 先后循序 !
    					Layui_edit(); //开启表格layui编辑
    					val_number(".int", "int", "1");
    					val_number(".Double", "double", "0.5");
    				})
    			})
    		</script>
    
    	</body>
    
    </html>
    
    
  • 相关阅读:
    SpringBoot介绍
    linux运行jar以及vi
    linux文件命名
    数据库 mysql
    SSM框架-Spring
    SSM框架-mybatis
    SSM框架-SpringMVC
    设计模式-策略模式
    设计模式-单例模式
    Java多线程实现和JUC介绍
  • 原文地址:https://www.cnblogs.com/userzf/p/12786962.html
Copyright © 2011-2022 走看看