我正在创建一个需要从文本输入中获取用户输入的应用程序。如果在任何时候输入的字符不正确(即:一个数字,仅应为a-z),则输入框将无效。然后,我将该字符放入输入中的“坏字符”数组中。如果删除了该字符,则输入框应再次有效。
我知道我可以在每次输入新按键时接受输入并检查输入,然后检查每个字符以确保允许输入。 我很好奇是否仍然可以看到用退格键删除了哪个字符。
对不起,我无法发布代码。
我在html中使用ng-keydown和mg-model。当按下确认按钮时,输入应该在ng-model中有效。
谢谢-我正在教自己Angularjs,所以我还不是最好的。
答案 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
中。这是我的代码,因此您需要根据需要进行调整。