限制input输入符合规则的浮点数
来源:互联网 发布:流程优化与再造 pdf 编辑:程序博客网 时间:2024/04/28 23:02
//给指定的dom添加事件$('#col-sm-2, #min_goods_amount').keydown(function(e){ return formatInput(e);}); /*** 限制input输入符合规则的浮点数* * @param {type} e 键盘事件* @param {type} maxInt 整数位最大位数 默认 6位整数* @param {type} maxDecimal 小数位最大位数 默认 2位整数* @returns {Boolean}*/function formatInput(e, maxInt, maxDecimal){ //限制非数字和非点的输入 if( !$(e.currentTarget).hasClass('limit_angle') ){ $(e.currentTarget).css('ime-mode','disabled'); $(e.currentTarget).addClass('limit_angle'); e.currentTarget.oninput = function(){ if(/[^\.|\d]/g.test(this.value)){ this.value = this.value.replace(/[^\.|\d]/g, ''); } } } //限制浮点数规则 maxInt = maxInt || 6; maxDecimal = maxDecimal || 2; e.keyCode = e.keyCode || e.charCode; //当前的值 var val = $(e.currentTarget).val(); //输入的值 var input = String.fromCharCode(e.keyCode); //小数点的位置 var pointPosition = val.indexOf('.'); //光标的位置 var seletorPosition = getCursorPosition( e.currentTarget ); //判断小数点的变量 var n = val.split('.'); //上下左右键 if(e.keyCode >=37 && e.keyCode <=40){ return true; } //输入的是退格键 if(e.keyCode == 8){ //有小数点,并且整数位就一位,这时删除整数位,要那0补上 if(pointPosition == 1 && seletorPosition == 1){ $(e.currentTarget).val('0' + val.substr(pointPosition)); setSeletorPosition(e.currentTarget, 1); return false; } //如果有小数点,如果整数位加上小数位的位数大于最大整数位,这时不让删除小数点,以免出现规则外的整数位 if(pointPosition !=-1 && n[0].length + n[1].length > maxInt && (pointPosition + 1) == seletorPosition){ return false; } return true; } //delete 键 if( e.keyCode == 46 ){ //有小数点,并且整数位就一位,这时删除整数位,要那0补上 if(pointPosition == 1 && seletorPosition == 0){ $(e.currentTarget).val('0' + val.substr(pointPosition)); setSeletorPosition(e.currentTarget, 0); return false; } //如果有小数点,如果整数位加上小数位的位数大于最大整数位,这时不让删除小数点,以免出现规则外的整数位 if(pointPosition !=-1 && n[0].length + n[1].length > maxInt && (pointPosition) == seletorPosition){ return false; } return true; } //input中已经有值,则不允许在第一个位置输入0 if(e.keyCode == 48 && seletorPosition==0 && val != ''){ return false; } //输入的是小数点 if(e.keyCode == 190 || e.keyCode == 46){ //小数点不能再首位 if(seletorPosition == 0) return false; //已经输入过小数点 if(pointPosition != -1) return false; //光标所在不能是遗留大于maxInt位的整数 if(val.substr(0, seletorPosition).length > maxInt) return false; //光标所在不能是遗留大于maxDecimal位的小数 if(val.substr(seletorPosition).length > maxDecimal) return false; return true; } //输入的不是数字 if( e.keyCode < 48 || e.keyCode > 57 ){ return false; } //光标在第一位,整数位是0 ,这是输入数值是直接替换0 if(seletorPosition == 1 && parseInt(n[0]) == 0){ if(pointPosition != -1){ $(e.currentTarget).val(input + val.substr(pointPosition)); }else{ $(e.currentTarget).val(input); } setSeletorPosition(e.currentTarget, 1); return false; } //如果有小数点 if(pointPosition > 0){ //光标在小数点前面,判断小数位的大小 if(pointPosition < seletorPosition){ if(n[1] == "undefined") return true; //小数位的位数 return n[1].length < maxDecimal; } } //整数位的位数 return n[0].length < maxInt;}//获得光标所在input的位置function getCursorPosition(dom){ var cursurPosition=-1; if(typeof dom.selectionStart != "undefined"){//非IE浏览器 cursurPosition= dom.selectionStart; }else{//IE var range = document.selection.createRange(); range.moveStart("character",-dom.value.length); cursurPosition=range.text.length; } return cursurPosition;}//设置光标所在input的位置function setSeletorPosition(dom, index){ if (dom.setSelectionRange) { // 标准浏览器 dom.setSelectionRange(index, index) } else { // IE9- var len = dom.value.length; var range = dom.createTextRange() range.moveStart("character", -len) range.moveEnd("character", -len) range.moveStart("character", index) range.moveEnd("character", 0) range.select() }}
0 0
- 限制input输入符合规则的浮点数
- 【ios学习记录】- UITextField输入浮点数的限制
- 限制QLineEdit输入浮点数的一点解决办法
- input输入框限制输入字节数
- NGUI的Input输入框限制中文字节数问题
- Android开发 Edittext限制输入浮点数
- QTableWidget中限制输入整数、浮点数
- QLineEdit限制输入(整数、浮点数)
- 求符合指定规则的数
- 限制Input输入框输入最小最大字符数
- JS判断input输入类型是否为整数,浮点数
- input只允许输入数字或者浮点数
- jquery 数据校验,input只能输入浮点数
- input只允许输入数字或者浮点数
- JavaScript限制文本框只能输入整形或浮点数类型
- JS限制文本框只能输入整形或浮点数
- Swing —— 限制JTextArea只能输入浮点数
- 关于限制浮点数位数的类
- 最大流
- 通过vtkFillHolesFilter类选择性地填充网格 学习笔记
- 老生常谈session,cookie的区别,安全性
- Markdown简介
- Trie树初探
- 限制input输入符合规则的浮点数
- 【CSS3】圆角效果 border-radius
- Cookie/Session的机制与安全
- Tyvj P1005 采药 - DP 0/1背包问题
- PHP定时完成数据库的备份
- 分治算法
- 算法设计题2.13-线性表-第2章-《数据结构习题集》-严蔚敏吴伟民版
- cascade属性值
- 你是产品经理么?