gpt4 book ai didi

javascript - 使用 Javascript 为日期输入自动斜杠 (/)

转载 作者:行者123 更新时间:2023-12-04 01:43:31 24 4
gpt4 key购买 nike

日期值中带有前导和尾随空格的自动斜杠 (/) 工作正常。

var date = document.getElementById('date');

function checkValue(str, max) {
if (str.charAt(0) !== '0' || str == '00') {
var num = parseInt(str);
if (isNaN(num) || num <= 0 || num > max) num = 1;
str = num > parseInt(max.toString().charAt(0))
&& num.toString().length == 1 ? '0' + num : num.toString();
};
return str;
};

date.addEventListener('input', function(e) {
this.type = 'text';
var input = this.value;
if (/\D\/$/.test(input)) input = input.substr(0, input.length - 3);
var values = input.split('/').map(function(v) {
return v.replace(/\D/g, '')
});
if (values[0]) values[0] = checkValue(values[0], 12);
if (values[1]) values[1] = checkValue(values[1], 31);
var output = values.map(function(v, i) {
return v.length == 2 && i < 2 ? v + ' / ' : v;
});
this.value = output.join('').substr(0, 14);
});
<input type="text" id="date" /> 

但是当我试图删除斜杠(/)前后的空格时。但是当我使用退格键删除每个字符时,斜杠并没有删除。

下面是我试过的。

var date = document.getElementById('date');

function checkValue(str, max) {
if (str.charAt(0) !== '0' || str == '00') {
var num = parseInt(str);
if (isNaN(num) || num <= 0 || num > max) num = 1;
str = num > parseInt(max.toString().charAt(0))
&& num.toString().length == 1 ? '0' + num : num.toString();
};
return str;
};

date.addEventListener('input', function(e) {
this.type = 'text';
var input = this.value;
if (/\D\/$/.test(input)) input = input.substr(0, input.length - 1);
var values = input.split('/').map(function(v) {
return v.replace(/\D/g, '')
});
if (values[0]) values[0] = checkValue(values[0], 12);
if (values[1]) values[1] = checkValue(values[1], 31);
var output = values.map(function(v, i) {
return v.length == 2 && i < 2 ? v + '/' : v;
});
this.value = output.join('').substr(0, 10);
});
<input type="text" id="date" /> 


请建议我改正此问题。

最佳答案

var date = document.getElementById('date');

function checkValue(str, max) {
if (str.charAt(0) !== '0' || str == '00') {
var num = parseInt(str);
if (isNaN(num) || num <= 0 || num > max) num = 1;
str = num > parseInt(max.toString().charAt(0))
&& num.toString().length == 1 ? '0' + num : num.toString();
};
return str;
};

date.addEventListener('input', function(e) {
this.type = 'text';
var input = this.value;
if (/\D\/$/.test(input)) input = input.substr(0, input.length - 3);
var values = input.split('/').map(function(v) {
return v.replace(/\D/g, '')
});
if (values[0]) values[0] = checkValue(values[0], 12);
if (values[1]) values[1] = checkValue(values[1], 31);
var output = values.map(function(v, i) {
return v.length == 2 && i < 2 ? v + ' / ' : v;
});
this.value = output.join('').substr(0, 14);
});
input {
word-spacing:-3px;
}
<input type="text" id="date" />

您可以“作弊”并使用一些 CSS:

word-spacing:-3px;

这会使 / 更靠近文本。

当您从 JavaScript 中删除空格时它不起作用的原因是因为您的代码正在寻找长度为 2 的字符串,但字符串长度为 3 当你添加没有空格的 / 时。

关于javascript - 使用 Javascript 为日期输入自动斜杠 (/),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44137998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com