edit类型 layui_基于layui,Jquery 表格动态编辑 设置 编辑值为 int 或者 double 类型及默认值...

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

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

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

基于layui,Jquery 表格动态编辑 设置 编辑值为 int 或者 double 类型及默认值 案例

// Author : userzf 、yirenipeng ; Upload Time: 2020/04/27 15:15

//-----[Layui表格编辑(

)] 2018-11-13

function Layui_edit() {

//数据可编辑

$(".My_edit").toggle(function() {

var text = $(this).html();

$(this).html('');

$(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+)\.(\d\d).*$/, '$1$2.$3'); //只能输入两个小数

return value;

}

Int
Double

$(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");

})

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值