OnKeyDown或KeyPress,检测插入字符的位置

时间:2017-08-23 23:56:27

标签: javascript html

我不知道这是否可能(它看起来不是),但我试图在HTML输入的onKeyDown或onKeyPress事件中找到一种方法来检测标签,结果值是什么。

我使用这些事件非常重要。我不能只使用onKeyUp,因为到那时输入已经改变了。我想首先防止它发生。我还尝试将按下的关键字符附加到字符串的末尾,但这并不能解释您在输入字段的字符串开头键入字符的情况。

有什么想法吗?我已经找了一段时间但看起来不可能,但我想我也会问。

2 个答案:

答案 0 :(得分:3)

这里我有两个版本,一个是jQuery,另一个是JavaScript。

$("#inputJQuery").on("keydown", function(ev){
	console.log("jQuery value:", $(this).val()); // this is the value before the key is added
	console.log("jQuery selectionStart:", this.selectionStart); // the position where the character will be inserted
	console.log("jQuery selectionEnd:", this.selectionEnd); // if has a selection this value will be different than the previous
})

document.querySelector("#inputVanilla").onkeydown = function(ev){
	console.log("VANILLA value:", this.value); // this is the value before the key is added
	console.log("VANILLA selectionStart:", this.selectionStart); // the position where the character will be inserted
	console.log("VANILLA selectionEnd:", this.selectionEnd); // if has a selection this value will be different than the previous
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input id="inputJQuery" type="text"/>
<input id="inputVanilla" type="text"/>

答案 1 :(得分:2)

只需检查keydown上length的{​​{1}}即可。这也适用于删除字符。

您还可以在返回value的条件中对此进行检查,以防止用户输入超过一定数量的字符。请注意,您可能想要针对退格删除键(keyCodes false和{{1}进行检查分别),以便在达到最大长度后能够删除密钥。

&#13;
&#13;
8
&#13;
46
&#13;
&#13;
&#13;

希望这有帮助! :)