0

这工作正常,但如果我使用我的数字键盘(右侧),它会认为它是一个字符并删除它,但左侧的数字被接受。我希望我的数字键盘(右侧)被接受。

<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>
4

1 回答 1

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));
});

JSFiddle

注意 - 这不会“保护”您免受将文本粘贴到输入字段中!为此,您需要绑定input事件。此外,非常快的打字可能会导致一些字母“进入低谷”。所以...

做同样的更好的方法:

$('input[name="inputDate"]:first').on('input', function(e){
    $(this).val( $(this).val().replace(/[^0-9]+/g, '') );
});

JSFiddle

最后...

如果您正在创建一个日期输入字段并希望让普通访问者只能输入有效日期,请查看Masked Input Plugin或其他一些“输入掩码”解决方案。

请注意,这仍然可以通过多种方式绕过,并且几乎总是需要服务器端检查。

于 2013-11-10T15:29:51.940 回答