我的代码有一个奇怪的问题。每次用户使用退格键时,都会从末尾删除三个数字。我目前正在使用$(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);
});
答案 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" />