Titanium Appcelerator - ввод даты рождения в текстовом поле - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь отформатировать свое текстовое поле, где пользователь введет свою дату рождения.

В настоящее время, когда пользователь начинает вводить третий символ, я добавляю "/".

Но мне нужно добавить «/», когда пользователь вводит 2-й символ.

Пожалуйста, найдите мой код ниже,

$.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;  
});

1 Ответ

0 голосов
/ 12 декабря 2018

Рекомендация: используйте средство выбора даты

Я бы порекомендовал заменить текстовое поле на метку (возможно, стилизованную так, чтобы она выглядела как текстовое поле, если это важно).

Затем я бы добавил событие клика к метке, которая отображала бы средство выбора даты. Документы для выбора даты

Вы можете обновить значение метки на основе значения средства выбора даты.

Решение существующего кода

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;
});

Это введет косую черту, когда пользователь введет 2-й символ, а также позволит пользователю удалить косую черту, используя клавишу возврата, если ему нужно отредактировать дату.

Другие соображения

Текущее текстовое поле позволяет пользователю вводить недопустимую дату. Например, пользователь может ввести дату, например, 60/99/2018. Использование средства выбора даты устраняет необходимость в такой проверке.

...