Att*_*Kun 5 html javascript jquery keypress javascript-events
我只能在没有新按下的键的情况下检索值.使用keyup事件不是一个选项,因为如果用户没有释放密钥,它就不会触发.这很重要,因为我想对每一个按键动作.
与从事件的参数可达键代码结合旧的价值是不能接受要么,因为它不能保证用户将键入的文本字符串的结尾.
可以计算出按键后的值。这在非 IE 浏览器中很容易,在 IE 中则比较棘手,但以下方法可以做到这一点:
document.getElementById("your_input").onkeypress = function(evt) {
    var val = this.value;
    evt = evt || window.event;
    var charCode = typeof evt.which == "number" ? evt.which : evt.keyCode;
    if (charCode) {
        var keyChar = String.fromCharCode(charCode);
        var start, end;
        if (typeof this.selectionStart == "number" && typeof this.selectionEnd == "number") {
            start = this.selectionStart;
            end = this.selectionEnd;
        } else if (document.selection && document.selection.createRange) {
            // For IE up to version 8
            var selectionRange = document.selection.createRange();
            var textInputRange = this.createTextRange();
            var precedingRange = this.createTextRange();
            var bookmark = selectionRange.getBookmark();
            textInputRange.moveToBookmark(bookmark);
            precedingRange.setEndPoint("EndToStart", textInputRange);
            start = precedingRange.text.length;
            end = start + selectionRange.text.length;
        }
        var newValue = val.slice(0, start) + keyChar + val.slice(end);
        alert(newValue);
    }
};
Run Code Online (Sandbox Code Playgroud)