Как проверить с помощью Javascript входной текст с часами и минутами - PullRequest
23 голосов
/ 06 апреля 2011

Мне нужно создать форму HTML с полем ввода текста для часов и минут.
Что-то вроде:

Имя: [Foo]
Фамилия: [Бар]
Задача: [Спам]
Часы Минуты: [00:15] <- Введите текст. </p>

Как я могу помочь / проверить / заставить пользователя скомпилировать значения часов и минут в единственно допустимом формате ЧЧ: мм с использованием Javascript?*

Допустимый диапазон времени: от 00: 00 до 23: 59

* Я могу 't использовать Jquery, и, конечно, я дважды проверил предоставленную серверную часть значения

Ответы [ 6 ]

48 голосов
/ 06 апреля 2011

Либо со следующим регулярным выражением:

^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$

Или от руки, но я настоятельно рекомендую RegExp :) Простой пример:

<SCRIPT TYPE="text/JavaScript">
    function validateHhMm(inputField) {
        var isValid = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(inputField.value);

        if (isValid) {
            inputField.style.backgroundColor = '#bfa';
        } else {
            inputField.style.backgroundColor = '#fba';
        }

        return isValid;
    }
</SCRIPT>
<FORM METHOD="POST">
    <input type="text" onchange="validateHhMm(this);" />
</FORM>
17 голосов
/ 20 октября 2015

RegExp из первого ответа не соответствует запросу OP правильно.

^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$

Должно быть

^([0-1][0-9]|2[0-3]):([0-5][0-9])$

Соответствует 00-19 или 20-23: 00-59

OP запросил подтверждение ЧЧ: ММ в диапазоне 00:00 - 23: 59

Нет секунд.24:00 не должно быть действительным.Двойные цифры для ввода часа и минуты.

7 голосов
/ 06 апреля 2011
<HTML>
<Head>
<script language="javascript">
function validateTime(obj)
{
    var timeValue = obj.value;
    if(timeValue == "" || timeValue.indexOf(":")<0)
    {
        alert("Invalid Time format");
        return false;
    }
    else
    {
        var sHours = timeValue.split(':')[0];
        var sMinutes = timeValue.split(':')[1];

        if(sHours == "" || isNaN(sHours) || parseInt(sHours)>23)
        {
            alert("Invalid Time format");
            return false;
        }
        else if(parseInt(sHours) == 0)
            sHours = "00";
        else if (sHours <10)
            sHours = "0"+sHours;

        if(sMinutes == "" || isNaN(sMinutes) || parseInt(sMinutes)>59)
        {
            alert("Invalid Time format");
            return false;
        }
        else if(parseInt(sMinutes) == 0)
            sMinutes = "00";
        else if (sMinutes <10)
            sMinutes = "0"+sMinutes;    

        obj.value = sHours + ":" + sMinutes;        
    }

    return true;    
}


</script>
</Head>
<Body>
<input type="text" onblur="validateTime(this)">
</Body>
</HTML>
2 голосов
/ 06 апреля 2011

Как насчет

function validTime(inputStr) {
    if (!inputStr || inputStr.length<1) {return false;}
    var time = inputStr.split(':');
    return time.length === 2 
           && parseInt(time[0],10)>=0 
           && parseInt(time[0],10)<=23 
           && parseInt(time[1],10)>=0 
           && parseInt(time[1],10)<=59;
}
0 голосов
/ 22 августа 2018

может быть не лучшим, но это работает для меня.Я возвращаю false, если в этом случае нет ошибок.проверяет как формат, так и значения.

if (value.substr(2,1) === ':') {
    if (!value.match(/^\d\d:\d\d/)) {
        return "Invalid Format";
    }
    else if (parseInt(value.substr(0,2)) >= 24 || parseInt(value.substr(3,2)) >= 60)  {
        return "Invalid Format";
    }
    else {
        return false;
    }

}
else {
    return "Invalid Format";
}
0 голосов
/ 06 апреля 2011

Вы можете использовать что-то вроде jQuery.maskedit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...