按下Java键后获取字符串值

时间:2018-08-29 10:56:56

标签: javascript

我想要的不是在javascript中模拟按键事件,而是在按键后获取字符串的值。

澄清;给定文本输入后,我想看看如果用户按下某个键,文本输入的值是什么。

即,我想要以下功能。

function getStringValueAfterKeyPress(string, cursorPosition, keyCode) {
    // returns string value after key press with provided code on provided cursor position
}

getStringValueAfterKeyPress('test', 4, 8) // returns 'tes' (8 is keycode of backspace)
getStringValueAfterKeyPress('test', 4, 37) // returns 'test' (37 is keycode of left arrow, hence string value has not changed)
getStringValueAfterKeyPress('test', 4, 49) // returns 'test1' (49 is keycode of '1')

以此类推。有没有简单的方法可以做到这一点?

P.S我的用例是在afterKeyDown事件上使用此方法,使用此方法在此键按下后获取我的输入元素的值,如果它与某个正则表达式不匹配,则阻止该操作。

1 个答案:

答案 0 :(得分:1)

您可以通过处理每次输入字段发生更改时触发的input事件来验证输入,该事件包括按键,复制/粘贴,拖放等。

这是一个验证不允许输入数字的名称输入字段的示例...

// our validation function to stop numbers being entered
function noNumbersAllowed() {
  this.value = this.value.replace(/\d/g, "");
}

// keep a reference to the element, so we don't have to search the DOM repeatedly
var nameInput = document.getElementById("name");

// create an input event listener that removes all numbers
nameInput.addEventListener("input", noNumbersAllowed);

// set focus because we're nice like that
nameInput.focus();
<input id="name" type="text" placeholder="Enter name (no numbers)"/>

您可以拥有多种类型的验证功能(如果需要),并将它们分配给需要验证的任何输入。