这个工作正常,但是如果我使用我的数字键盘(右侧),它会认为它是一个字符并删除它但是左侧的数字被接受。我希望我的号码垫(右侧)被接受。
<script type="text/javascript">
$("input[name='inputDate']:first").keyup(function(e){
var key=String.fromCharCode(e.keyCode);
if(!( key >= 0 && key <= 9 )) {
$(this).val($(this).val().substr(0,$(this).val().length-1));
}
});
</script>
已更新(已解决)
<script type="text/javascript">
$("input[name='birthdate']:first").on('keyup', function(e){
var val = $(this).val();
var key = val.substr(val.length - 1)
var value=$(this).val();
if(value.length === 2|| value.length === 5)$(this).val($(this).val()+'/');
if(!(key>=0&&key<=9))
$(this).val(val.substr(0,val.length-1));
});
</script>
答案 0 :(得分:1)
试试这个,读取最后一个字符而不是键码:
$("input[name='inputDate']:first").on('keyup', function(e){
var val = $(this).val();
var key = val.substr(val.length - 1)
if(!(key>=0&&key<=9))
$(this).val(val.substr(0,val.length-1));
});
注意 - 这不会“保护”您在输入字段中粘贴的文本!为此,您需要绑定input
事件。此外,非常快速的打字可能会导致一些字母“低谷”。所以......
$('input[name="inputDate"]:first').on('input', function(e){
$(this).val( $(this).val().replace(/[^0-9]+/g, '') );
});
如果您要创建日期输入字段并想要使常规访问者只能输入有效日期,请查看Masked Input Plugin或其他一些“输入掩码”解决方案。
请注意,这仍然可以通过多种方式绕过,并且几乎总是需要进行服务器端检查。