我正在处理一份输入表单,其中包含仅Visa和万事达卡的信用卡到期日期。这两个将到期日期限制为MM / YY。我在表单的其他地方使用以下脚本在用户输入出生日期时自动引入斜杠:
$(function() {
var date = document.getElementById('ccexp');
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('keydown', function(e) {
this.type = 'text';
var input = this.value;
var key = e.keyCode || e.charCode;
if (key == 8 || key == 46) // checks if backspace or delete is being pressed
return false;
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); // validates month 1-12
if (values[1]) values[1] = checkValue(values[1], 31); // validates day 1-31
var output = values.map(function(v, i) {
return v.length == 2 && i < 2 ? v + '/' : v;
});
this.value = output.join('').substr(0, 10);
});
});
(此项目的要求是用户输入日期,而不是使用日期选择器)。我想使用这个脚本的版本来寻找MM / YY,但我真的不知道如何自己解析这个问题。