AngularJS-查看哪个字符由退格键或删除键删除而不进行比较

时间:2018-07-17 23:30:56

标签: angularjs angularjs-scope

我正在创建一个需要从文本输入中获取用户输入的应用程序。如果在任何时候输入的字符不正确(即:一个数字,仅应为a-z),则输入框将无效。然后,我将该字符放入输入中的“坏字符”数组中。如果删除了该字符,则输入框应再次有效。

我知道我可以在每次输入新按键时接受输入并检查输入,然后检查每个字符以确保允许输入。 我很好奇是否仍然可以看到用退格键删除了哪个字符。

对不起,我无法发布代码。

我在html中使用ng-keydown和mg-model。当按下确认按钮时,输入应该在ng-model中有效。

谢谢-我正在教自己Angularjs,所以我还不是最好的。

1 个答案:

答案 0 :(得分:1)

要获取已删除的字符,您可以使用普通的旧javascript:

var caret_get_position = function(element){
    var pos    = 0;
    var posEnd = 0;
    if('selectionStart' in element){
        pos    = element.selectionStart;
        posEnd = element.selectionEnd;
    }else if('selection' in document){
        element.focus();
        var Sel       = document.selection.createRange();
        var SelLength = document.selection.createRange().text.length;
        Sel.moveStart('character', -element.value.length);
        pos    = Sel.text.length-SelLength;
        posEnd = Sel.text.length;
    }
    // return both selection start and end;
    return [pos, posEnd];
};
//get deletet character
element.addEventListener('keydown', function(event){
    var keycode      = ('which' in event)?event.which:event.keyCode;
    caret_positions  = caret_get_position(element);
    var val = this.value;
    if(keycode == 8){
        if(caret_positions[0] == caret_positions[1]){
            if(caret_positions[0] == 0){
                deleted = '';
            }else{
                deleted = val.substr(caret_positions[0]-1, 1);
            }

        }else{
            deleted = val.substring(caret_positions[0], caret_positions[1]);
        }
    }else if(keycode == 46){
        if(caret_positions[0] == caret_positions[1]){
            if(caret_positions[0] === val.length){
                deleted = '';
            }else{
                deleted = val.substr(caret_positions[0], 1);
            }
        }else{
            deleted = val.substring(caret_positions[0], caret_positions[1]);
        }
    }
});

所以我在这里做什么?

caret_get_position几乎是不言而喻的。它将获得插入符号的当前位置(输入字段中的闪烁线)。即使您选择了一个以上的字符,即使在选定的范围内(蓝色的东西)。

在keydown事件中,它将检查按下的键,并且还会检查插入符号的位置。 最后,已删除的字符位于变量deleted中。这是我的代码,因此您需要根据需要进行调整。

相关问题