Определить редактирование перед запятой используя событие keydown - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть требование для проверки ввода до того, как оно появится с использованием угловых 6. Требуется определить, редактирую ли я до десятичной или после.Если это до десятичного числа, я должен разрешить, а если нет, то я должен ограничить.Ex.138.02 (если я печатаю до десятичного числа, например 4 после 138, тогда оно должно работать, и новое значение должно быть 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?

...