嗨,我正在尝试与时间合作,但无法这样做。
我有一个文本字段,默认情况下我会得到时间。当用户改变我正在运行jquery change事件的时间来检查时间值。如果小时和分钟在允许的范围内。
一切都很好。 但是当用户输入60分钟时,我无法添加+1小时。例如:如果用户输入10:60,那么时间应该改为11:00,而我不会得到101:00 。
我解决了。我忘了将格式更改为parseInt()。添加后解决了我的问题。
为了您的考虑,我正在添加一个代码段。
$(document).ready(function() {
var currentdate = new Date();
var datetime = currentdate.getHours() + ":" + currentdate.getMinutes();
//console.log(datetime);
$("#test").val(datetime);
$("#test").change(function() {
var time = $("#test").val();
var patt = /^[0-9:]{1,5}$/igm;
var res = patt.test(time);
if (res === true) {
if ($(this).val().length < 3) {
alert('Invalid Time Format');
} else {
var arr = time.split(":");
MyDateString = ('0' + arr[0]).slice(-2) + ":" + ('0' + arr[1]).slice(-2);
$('#test').val(MyDateString);
if (arr[1] == 60) {
if (arr[0] == 24) {
$('#test').val(function(index, value) {
return value.replace('24', '01');
});
$('#test').val(function(index, value) {
return value.replace('60', '00');
});
} else if (arr[0] > 24) {
alert('Time is invalid');
} else {
$('#test').val(function(index, value) {
console.log(value);
var arr = time.split(":");
var val = arr[0] + 1;
console.log(val);
return value.replace(arr[0], parseInt(arr[0]) + 1);
});
$('#test').val(function(index, value) {
return value.replace('60', '00');
});
}
} else if (arr[1] < 60) {
if (arr[0] == 24) {
$('#test').val(function(index, value) {
return value.replace('24', '00');
});
}
} else {
alert('Time is invalid');
}
}
} else {
alert('Invalid Time Format');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<input type="test" id="test" value="Hello" />
答案 0 :(得分:1)
替换此行
return value.replace(arr[0], arr[0] + 1);
与
return value.replace(arr[0], arr[0] - 0 + 1); //0 is reduced so that arr[0] is converted to Number first
或
return value.replace(arr[0], Number(arr[0]) + 1);
答案 1 :(得分:0)
我解决了。我忘了将格式更改为parseInt()。一旦添加解决了我的问题。