javascript - 使用 keydown 事件识别小数点前的编辑
问题描述
我需要在使用 angular 6 出现之前验证输入。要求是确定我是在十进制之前还是之后进行编辑。如果它在小数点之前我必须允许,如果不是那么我必须限制。前任。138.02 (如果我在小数点之前输入 138 之后的 4 那么它应该可以工作,新值应该是 1384.02 但如果我在 .02 之后输入(任何数字)它不应该工作。
我正在关注以下代码
function validateFloatKeyPress(el, evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
var number = el.value.split('.');
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
//just one dot (thanks ddlab)
if(number.length>1 && charCode == 46){
return false;
}
//get the carat position
var caratPos = getSelectionStart(el);
var dotPos = el.value.indexOf(".");
if( caratPos > dotPos && dotPos>-1 && (number[1].length > 1)){
return false;
}
return true;
}
//thanks: http://javascript.nwbox.com/cursor_position/
function getSelectionStart(o) {
if (o.createTextRange) {
var r = document.selection.createRange().duplicate()
r.moveEnd('character', o.value.length)
if (r.text == '') return o.value.length
return o.value.lastIndexOf(r.text)
} else return o.selectionStart
}
document.selection.createRange().duplicate() 不适用于 Angular 6?
解决方案
推荐阅读
- swift - (Firebase)用 facebook 登录后,它不会返回到我的应用程序
- openedge - 如何在智能窗口上设置自动刷新?
- gojs - GoJS:防止在将节点拖动到边界时移动图表
- node.js - 即使账户中存在域,AWS CLI list-domain-names/describe-domain 也会返回空
- cron - Cron 表达式:完成另一个工作后开始工作
- java - Apache lang3 有效,但 Apache lang 无效。为什么?
- c - 在 Mac OS X 上用 C 编译hiredis
- haskell - Haskell中的计时器(Control.Concurrent.Timer):重复执行
- ios - 撤销 .p8 密钥会使现有的 FCM 令牌失效吗?
- django - 创建的网站用于编辑带框架的图像