字符串时间验证(在javascript中)

时间:2011-02-12 04:23:46

标签: javascript validation

我有一个接受时间的文本框(最多5个字符),以及一个接受am或pm值的下拉菜单。

我需要对输入到文本框中的字符串值执行一些验证,例如:

  1. 如果用户输入9 =>应改为0900
  2. 9:3 => 0930
  3. 09:3 => 0930
  4. 93 =>警报('无效小时值)
  5. 115 => 0115
  6. 12 => 1200
  7. 无效的条目,例如!@#$%^& *()<>?/〜`,;'“[] _- abcdefg .. => alert('无效的时间价值')应该是显示。
  8. 到目前为止,我所取得的成就正在取代:''。 例如,如果用户输入09:00 => 0900

    我需要类似的东西:

    如果clks是1位数,那么右键盘会有2个零。

    如果是2位数:clks> 12,然后提醒(无效小时值)

    如果是3位数:clks< (%59)(即检查最后2个字符),然后是左边的1个零             或clks> (%59),然后提醒('无效分钟值)

    如果4位:clks&gt; 12%(检查前2个字符),警告('无效小时值')             或(clks&gt; 12%和clks&gt; 59%),然后提醒('无效时钟时间')             或(clks <12%)和(clks <59%),然后接受该数字。

    如果是5位:(并且都是数字),则提醒('无效clk时间')

    这些验证需要在脚本标记内完成。 (我使用的后端语言是jsp。)

    请帮助我:(

    以下是我编写的代码的一部分:

    <script type='text/javascript'>
    function clocks(){
    
        var clk = document.getElementById('TIME').value;
        var clks = clk.replace('/:/g','');
        var ampm = document.getElementById('AMPM').value;
        var add = 1200;
    
        if (clks=="")
        {
            alert("You must enter clock time");
        }
        else
        {
            if (ampm=='p')
            {
                clks=parseFloat(clks) + parseFloat(add);
            }
        }
    
    }
    ....
    </script>
    

2 个答案:

答案 0 :(得分:0)

这是一种在函数中执行此操作的方法:

function validate_time( clks ) {

   // Remove any non-digit characters
   clks = clks.toString().replace(/\D/g, '');
   var is_valid = false;

   switch (clks.length) {

       case 1:

           // This will run if the length is 1 digit.
           clks = clks + '00';

           // Mark this as a valid time.
           is_valid = true;

           // stop running the rest
           break;

       case 2:

           if ( parseInt(clks) > 12 ) { 
               alert("Invalid hours value"); 
           } else {
               is_valid = true;
           }

           break;

       case 3:

           // Get last two characters
           var mins = clks.substr(1,2);    // offset 1 character, length of 2 characters

           if ( parseInt(mins) <= 59 ) { 
               clks = '0' + clks; 
               is_valid = true;
           } else { 
               alert('Invalid minutes value'); 
           }

           break;

       case 4:

           var hours = clks.substr(0,2);
           var mins = clks.substr(2,2);

           if ( parseInt(hours) > 12 || parseInt(mins) > 59 ) { 
               alert('Invalid clock time'); 
           } else {
               is_valid = true;
           }

           break;

       case 5:

           alert("Invalid clock time");
           break;

    }

    var data = { clks: clks, is_valid: is_valid };

    return data;

}

要打电话,你可以这样做:

var result = validate_time(clks);

并且您的结果将是传回的对象... result.clks是填充时间,result.is_valid将是关于输入时间是否有效的真值或假值。

答案 1 :(得分:0)

    function validateTimeNew(obj) {

        var timeValue = obj.value;
        if (timeValue == "" || timeValue.indexOf(":") < 0) {
            alert("Invalid Time format.Valid Format Example  01:56:00 or 23:06:00");
            return false;
        }
        else {
            var sHrs = timeValue.split(':')[0];
            var smin = timeValue.split(':')[1];
            smin = smin.substring(0, 2);
            var sAmnPm = timeValue.split(' ')[1] || timeValue.split(':')[2];
            if (!isNaN(sAmnPm))
            {
                sAmnPm = sAmnPm.toUpperCase();
            }
            var chkAmnPm =timeValue.split(':')[1];             
            if (chkAmnPm.length == 4)
                sAmnPm = chkAmnPm.substring(2, 4);
                 sAmnPm = sAmnPm.toUpperCase();              
            if (sHrs == "" || isNaN(sHrs) || parseInt(sHrs) > 23) {
                alert("Invalid Time format Hours : "+ sHrs);
                return false;
            }
            else if (parseInt(sHrs) == 0) {
                sHrs = "00";
                sAmnPm = "AM";
            }
            else if (sHrs < 10 )
            {
                sHrs = "0" + parseInt(sHrs);
                if (sAmnPm != "PM")
                sAmnPm = "AM";
            }
            else if (sHrs > 13) {
                sHrs = parseInt(sHrs) - 12;
                if (sHrs < 10)
                    sHrs = "0" + parseInt(sHrs);
                    sAmnPm = "PM";
            }
            else if (sHrs == 10 )
            {
                sHrs = parseInt(sHrs);                  
                if (sAmnPm != "PM")
                sAmnPm = "AM";                                     
            }
            if (smin == "" || isNaN(smin) || parseInt(smin) > 59) {
                alert("Invalid Time format Minutes :" + smin);
                return false;
            }
            else if (parseInt(smin) == 0)
                smin = "00";
            else if (smin < 10)
                smin = "0" + parseInt(smin);
            if (sAmnPm == "" || sAmnPm=="undefined")
            {
                sAmnPm = "AM"
            }
            else { sAmnPm = sAmnPm.toUpperCase(); }
            obj.value = sHrs + ":" + smin + ":" + sAmnPm;
        }
    }