Titanium Appcelerator - 在文本字段中输入出生日期
Titanium Appcelerator - Entering Date of birth in textfield
我正在尝试格式化我的文本字段,用户将在其中输入他的出生日期。
目前,当用户开始输入第三个字符时,我正在添加“/”。
但是我需要在用户键入第二个字符时添加“/”。
请在下面找到我的代码,
$.dobTextfield.addEventListener("change", function (event) {
var dobValue = $.dobTextfield.value;
dobValue = dobValue.replace(/\//g, '');
var newVal = '';
var sizes = [2, 2, 4];
for (var i in sizes) {
if (dobValue.length > sizes[i]) {
newVal += dobValue.substr(0, sizes[i]) + '/';
dobValue = dobValue.substr(sizes[i]);
}
else
break;
}
newVal += dobValue;
$.dobTextfield.value = newVal;
});
建议:使用日期选择器
我建议您用标签替换您的文本字段(如果这很重要,可能样式看起来像文本字段)。
然后我会向显示日期选择器的标签添加一个点击事件。
Date Picker Docs
您可以根据日期选择器的值更新标签的值。
现有代码的解决方案
var oldValue;
$.dobTextfield.addEventListener("change", function (event) {
var dobValue = $.dobTextfield.value;
// this checks to see if the user has removed a slash bu hitting backspace
// without this the user would not be able to delete a back space
if (oldValue == dobValue + "/") {
return;
}
var newVal = '';
var sizes = [2, 2, 4];
if (dobValue.length == 2 || dobValue.length == 5) {
dobValue += "/";
}
$.dobTextfield.value = dobValue;
oldValue = $.dobTextfield.value;
});
这将在用户键入第二个字符时输入斜线,并且还允许用户在需要编辑日期时使用退格键删除斜线。
其他注意事项
您当前的文本字段允许用户输入无效日期。例如,用户可以输入诸如 60/99/2018 之类的日期。使用日期选择器将不再需要进行此类验证。
我正在尝试格式化我的文本字段,用户将在其中输入他的出生日期。
目前,当用户开始输入第三个字符时,我正在添加“/”。
但是我需要在用户键入第二个字符时添加“/”。
请在下面找到我的代码,
$.dobTextfield.addEventListener("change", function (event) {
var dobValue = $.dobTextfield.value;
dobValue = dobValue.replace(/\//g, '');
var newVal = '';
var sizes = [2, 2, 4];
for (var i in sizes) {
if (dobValue.length > sizes[i]) {
newVal += dobValue.substr(0, sizes[i]) + '/';
dobValue = dobValue.substr(sizes[i]);
}
else
break;
}
newVal += dobValue;
$.dobTextfield.value = newVal;
});
建议:使用日期选择器
我建议您用标签替换您的文本字段(如果这很重要,可能样式看起来像文本字段)。
然后我会向显示日期选择器的标签添加一个点击事件。 Date Picker Docs
您可以根据日期选择器的值更新标签的值。
现有代码的解决方案
var oldValue;
$.dobTextfield.addEventListener("change", function (event) {
var dobValue = $.dobTextfield.value;
// this checks to see if the user has removed a slash bu hitting backspace
// without this the user would not be able to delete a back space
if (oldValue == dobValue + "/") {
return;
}
var newVal = '';
var sizes = [2, 2, 4];
if (dobValue.length == 2 || dobValue.length == 5) {
dobValue += "/";
}
$.dobTextfield.value = dobValue;
oldValue = $.dobTextfield.value;
});
这将在用户键入第二个字符时输入斜线,并且还允许用户在需要编辑日期时使用退格键删除斜线。
其他注意事项
您当前的文本字段允许用户输入无效日期。例如,用户可以输入诸如 60/99/2018 之类的日期。使用日期选择器将不再需要进行此类验证。