获取已删除的角色 [英] Getting Deleted character
本文介绍了获取已删除的角色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在输入字段中,如果用户按下退格键或删除键,是否有办法获取已删除的字符。
in in Input field, if the user presses Backspace or Delete key, is there a way to get the deleted character.
我需要针对RegExp进行检查。
I need to check it against a RegExp.
推荐答案
以下内容适用于文本< input> $ c的所有主流浏览器$ c>元素。它不应该用于
< textarea>
元素,因为 getInputSelection
函数不能正确解释换行符在IE中。请参见此回答一个(更长)的功能,它将执行此操作。
The following will work in all major browsers for text <input>
elements. It shouldn't be used for <textarea>
elements because the getInputSelection
function doesn't account for line breaks correctly in IE. See this answer for a (longer) function that will do this.
function getInputSelection(input) {
var start = 0, end = 0;
input.focus();
if ( typeof input.selectionStart == "number" &&
typeof input.selectionEnd == "number") {
start = input.selectionStart;
end = input.selectionEnd;
} else if (document.selection && document.selection.createRange) {
var range = document.selection.createRange();
if (range) {
var inputRange = input.createTextRange();
var workingRange = inputRange.duplicate();
var bookmark = range.getBookmark();
inputRange.moveToBookmark(bookmark);
workingRange.setEndPoint("EndToEnd", inputRange);
end = workingRange.text.length;
workingRange.setEndPoint("EndToStart", inputRange);
start = workingRange.text.length;
}
}
return {
start: start,
end: end,
length: end - start
};
}
document.getElementById("aTextBox").onkeydown = function(evt) {
evt = evt || window.event;
var keyCode = evt.keyCode;
var deleteKey = (keyCode == 46), backspaceKey = (keyCode == 8);
var sel, deletedText, val;
if (deleteKey || backspaceKey) {
val = this.value;
sel = getInputSelection(this);
if (sel.length) {
deletedText = val.slice(sel.start, sel.end);
} else {
deletedText = val.charAt(deleteKey ? sel.start : sel.start - 1);
}
alert("About to be deleted: " + deletedText);
}
};
这篇关于获取已删除的角色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文