我需要先验证输入,然后使用角度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一起使用吗?