如何使用Javascript验证带有小时和分钟的输入文本

时间:2011-04-06 07:46:23

标签: javascript validation

我必须构建一个HTML表单,其中包含“小时”和“分钟”的“输入”文本字段 类似的东西:

  

姓名: [Foo]
  姓: [酒吧]
  任务: [垃圾邮件]
  小时分钟: [00:15]< - 输入文字。

如何使用Javascript帮助/验证/强制用户以唯一允许的 HH:mm 格式编辑小时和分钟值? *

有效时间范围:从 00:00 23:59

*我不能使用Jquery,当然我会仔细检查提交的值服务器端

7 个答案:

答案 0 :(得分:46)

使用以下正则表达式:

^([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>

答案 1 :(得分:17)

第一个答案的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范围内验证HH:MM

没有秒。 24:00不应该有效。输入小时和分钟的两位数。

答案 2 :(得分:6)

<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>

答案 3 :(得分:4)

使用moment.js的方式是:

const time = '23:59'
moment(time, 'HH:mm', true).isValid()

答案 4 :(得分:2)

怎么样

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

答案 5 :(得分:2)

您可以使用此功能检查时间格式:

function validateTime (time) {
  const timeReg = /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/
  return time.match(timeReg)
}

如果您希望只有一小时和一分钟,请将timeReg替换为:

const timeReg = /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/

这是日期格式:

function validateDate (date) {
  try {
    new Date(date).toISOString()
    return true
  } catch (e) {
    return false
  }
}

答案 6 :(得分:0)

您可以使用类似jQuery.maskedit

的内容