长度-1比JS更适合

时间:2019-02-18 19:24:44

标签: javascript jquery html

我的代码有一个奇怪的问题。每次用户使用退格键时,都会从末尾删除三个数字。我目前正在使用$(this).val($(this).val()。substring(0,$(this).val()。length-1));从末尾取一个数字,但要删除更多的数字。我做错什么了吗?

on('keydown keyup', '.type-date', function(e) {
        $(this).attr('maxlength', '10');
        var value = $(this).val();
        var key = String.fromCharCode(e.keyCode);
        if (!(key >= 0 && key <= 9))
            $(this).val($(this).val().substring(0, $(this).val().length - 1));
        if (value.length == 2 || value.length == 5)
            $(this).val($(this).val() + '/');
        $('.type-date').attr('value', value);
    });

1 个答案:

答案 0 :(得分:1)

该函数在keydown上执行两次,然后在keyup上执行两次。只需在keyup

上触发功能

$('.type-date').on('keyup', function(e) {
        $(this).attr('maxlength', '10');
        var value = $(this).val();
        var key = String.fromCharCode(e.keyCode);
        if (!(key >= 0 && key <= 9))
            $(this).val($(this).val().substring(0, $(this).val().length));
        if (value.length == 2 || value.length == 5)
            $(this).val($(this).val() + '/');
        $('.type-date').attr('value', value);
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="type-date" />