我有几个输入项,允许用户输入日期,输入时它将格式化数字01/25/2020。现在,我必须有一个允许用户在同一输入字段中输入时间的字段。我正在尝试保持类似的流程,该流程将随着用户的输入进行格式化。你们是否会为此提供解决方案?这是我当前的代码:
.on('keyup', '.type-date', function(e) {
$(this).attr('maxlength', '10');
var value = $(this).val();
var key = e.keyCode;
if (!(key >= 48 && key <= 57 && 8)) {
$(this).val($(this).val().substring(0, $(this).val().length));
}
if (key == 8) {
} else if (value.length == 2 || value.length == 5) {
$(this).val($(this).val() + '/');
}
$('.type-date').attr('value', value);
});
答案 0 :(得分:0)
要获得预期结果,请使用以下选项
var错误=((typedate.slice(0,2)> 12)||(typedate.slice(2,4)> 31)||(typedate.slice(4,6)> 60)||( typedate.slice(6,8)> 24))? true:否
var date = $(this).val()。split('');
$('.type-date').on('keyup', function(e) {
$(this).attr('maxlength', '10');
var typedate = $(this).val();
var error = ((typedate.slice(0,2) > 12) || (typedate.slice(2,4) > 31) || (typedate.slice(4,6) > 60) || (typedate.slice(6,8) > 24)) ? true : false
if(!error && typedate.length === 10){
var date = $(this).val().split('');
date.splice(2, 0, "/");
date.splice(5, 0, "/20");
date.splice(8, 0, " ");
date.splice(11, 0, ":");
typedate.slice(6, 8) > 12
? date.splice(14, 0, " PM")
: date.splice(14, 0, " AM");
var time =
typedate.slice(6, 8) > 12 ? typedate.slice(6, 8) - 12 : typedate.slice(6, 8);
time = time < 10 ? "0" + time : time;
date.splice(9, 2, ...time.toString().split(""));
$('.result').text(date.join(''));
}else{
$('.result').text('Invalid Date');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="type-date">
Date: <span class="result"></span>
codepen-https://codepen.io/nagasai/pen/GzLOKG?editors=1010
输入: 1222192311
输出: 12/11/2019 11:11 PM