网站首页 > 开源技术 正文
在只能输入【正小数】的输入框获取到焦点时,移除千位分隔符,
在输入数据时,实时校验输入内容是否正确,
失去焦点后,添加千位分隔符格式化数字。同时小数位未满时末尾补0。
HTML代码
<input type="text" class="force-decimalToFixed-2-3" .../>
JS调用方法
$(document.body).find("input[type=text]").each(function() {
// 验证输入内容
callCustomiseInputCheck(this);
});
验证小数位补0,【正小数】类型方法
function callCustomiseInputCheck(inputObject) {
jQuery.each(inputObject.classList, function(itemIndex, classItem) {
//例:<input type="text" class="force-decimalToFixed-2-3" .../> 整数部桁数:2、小数部桁数:3
if (/^force\-decimalToFixed\-\d{1,}\-\d{1,}$/.test(classItem)) {
// 方法【runInputFilter】,参照文章【Jquery实时验证,只能输入指定长度的数字】
runInputFilter(inputObject, ',', function(value) {
if (/^\d*\.?\d*$/.test(value)) {//数字的场合
var jsInteger = value.split('.')[0];//整数部
var jsScale = value.split('.')[1];//小数部
//整数部分越界的场合
if (jsInteger && parseInt(jsInteger) > 0
&& jsInteger.length > parseInt(classItem.split('-')[2])) {
return false;
}
//小数部分越界的场合
if (jsScale && parseInt(jsScale) > 0
&& jsScale.length > parseInt(classItem.split('-')[3])) {
return false;
}
return true;
} else {
//不是数字的场合
return false;
}
});
//格式化
postLostFocus(inputObject, function(inputObject) {
if (inputObject.value == "") {
return false;
}
if (!inputObject.value.contains('.')) {
inputObject.value = inputObject.value + '.';
}
var regExp = RegExp(/^(\-?)(0{1,})?(\d*\.?\d*)$/);
var outPutArray = inputObject.value.match(regExp);
inputObject.value = outPutArray[1] + outPutArray[3];//去掉左侧重复的0(例:「0012=>12」、「0012.23=>12.23」)
var classItemLength = classItem.split('-').length
if (classItemLength == 4) {//指定小数位数的场合
var jsScale = parseInt(classItem.split('-')[3]);//小数部
inputObject.value = inputObject.value.split('.')[0] + '.' + inputObject.value.split('.')[1]).padEnd(jsScale, '0')//小数末尾补0
}
inputObject.value = CommonUtilJs.addComma(inputObject.value)
});
//终止循环
return false;
}
});
}
共通处理方法
/**
* 绑定失去焦点时的处理
* @param textbox HTML输入框
* @param lostFocusFunction 失去焦点时的处理
* 例:postLostFocus(ocument.getElementById("XXX"),functionXXXXX);
*/
function postLostFocus(textbox, lostFocusFunction) {
["focusout"].forEach(function(event) {
var eventCommonPostLostFocus = function(event) {
lostFocusFunction(this);
}
// 参照文章【前端Jquery调用on或bind方法,避免重复绑定】
addEventExtras(textbox, event, eventCommonPostLostFocus);
});
}
function CommonUtilJs() { }
//数值格式化
CommonUtilJs.addComma = function(value) {
var patern = /^([\+\-]?\d+)(\d{3})([\,\d+]*)(\.\d+)?$/;
var rep = "";
var val = "";
if (value != undefined && value != null) {
val = String(value);
while (rep != val) {
rep = val;
val = rep.replace(patern, "$1,$2$3$4");
}
}
return val;
};
猜你喜欢
- 2025-07-08 Axure完成前端开发可行性探索(axure项目实战)
- 2025-07-08 JavaScript学习笔记(三十一)—jQuery(上)
- 2025-07-08 Jquery高级编程(jquery代码)
- 2025-07-08 jquery常用基础方法(jquery基本用法)
- 2025-07-08 jQuery知识一览(jquery的认识和使用)
- 2025-07-08 jQuery学习-----(一)JQuery的'$'符号用法
- 2025-07-08 关于JQuery引用及基本用法(jquery.min.js 引用)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)