我有一个要求,在输入文本框中,对输入的每个值都必须进行验证,并且在输入第6个字符之后必须在字符串中添加连字符。
我尝试过的解决方案和我遇到的问题列出如下:
-
keyup -它可以完美地检测输入的每个字符并添加连字符,除了"它将只发送一个长键按下的单个键条目"。例如:如果我长时间按下"9",文本框中的值将是"999999999999",但keyup事件只触发一次。
-
keypress -它可以完美地检测输入的每个字符并添加连字符,除了"在退格时不调用keypress事件"。例如:如果我输入退格,我有一个功能来再次验证字段并删除连字符。
-
keydown -我没有得到每个键下的确切当前值。例如:如果我在字段中输入"9",在keydown事件中,我只得到"作为当前值"。我输入'99',我得到'9'作为字段值。
-
input -一切都很好,除了我无法得到这个函数内的键码。
那么,为了
- 使用长按键,
- 退格检测,
- 键被按下时更新的当前值,
同时工作
在过去的几个小时里,我一直在探索很多东西。也许这是一件简单的事情,但我无法得到答案。非常感谢你的帮助。
我有同样的问题,并修复它添加这两个函数:
$('#YourId').keydown(function () {
yourFunction();
}).keyup(function () {
yourFunction();
});
如果你只需要做一次,比如第一次输入第6个字符,而不是每6个字符输入一次,你可以这样做:
https://jsfiddle.net/zx7snsos/$('input').on('keyup', function(e){
var str=$('input').val();
if(str.length>6&&str.indexOf('-')!=6)
str=str.slice(0,6)+'-'+str.slice(6);
else if(str.length==6)
str+='-';
$('input').val(str);
});