我试图通过使用自定义jQuery函数来过滤用户输入:
$(document).ready(function(){
$('#afm').keypress(function(key){
var len = $('#afm').val().length;
console.log(key.charCode);
if( key.charCode < 8 || (key.charCode > 8 && key.charCode < 48) || key.charCode > 57 && len < 9){
$('#tip-afm').text("error");
return false;
}
else
$('#tip-afm').text("");
})
})
每当我按退格键时,console.log会将charCode显示为0。 据我所知8是分配给退格的代码.. 难道我做错了什么? 我是否必须更改代码以将退格代码处理为0?或者这可能导致将来出错?
答案 0 :(得分:2)
使用此按钮获取按下的键的代码
var code = e.keyCode || e.which;
答案 1 :(得分:2)
使用以下方法检查字符:
GlobalConfiguration.Configuration.Services.Add(typeof(IExceptionLogger), new GlobalExceptionLogger());
GlobalConfiguration.Configuration.MessageHandlers.Add(new MessageHandler());
和key.which
答案 2 :(得分:2)
当用户输入退格时,可能不会触发keypress
事件。检查此答案,您可能希望使用keyup
代替。另请查看我对另一个问题的回答:https://stackoverflow.com/a/30108293/2314737
答案 3 :(得分:1)
您必须使用 jQuery.keyup()而不是 jQuery.keypress()并使用 key.keyCode 而不是 key.charCode 即可。
以下代码:
$(document).ready(function(){
$('#afm').keyup(function(key){
var len = $('#afm').val().length;
console.log(key.keyCode);
if( key.keyCode < 8 || (key.keyCode > 8 && key.keyCode < 48) || key.keyCode > 57 && len < 9){
$('#tip-afm').text("error");
return false;
}
else
$('#tip-afm').text("");
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="afm">
<div id="tip-afm">
</div>