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

标签 javascript validation

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

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

  1. 如果用户输入 9 => 应更改为 0900
  2. 9:3 => 0930
  3. 09:3 => 0930
  4. 93 => 警报('无效小时值)
  5. 115 => 0115
  6. 12 => 1200
  7. 应显示无效条目,例如 !@#$%^&*()<>?/~`,;'"""[]_-abcdefg.. => 警报('无效时间值')。<

到目前为止,我所做的只是将 : 替换为 ''。 例如,如果用户输入 09:00 => 0900

我需要这样的东西:

如果 clks 是 1 位数字,则 rightpad clks 有 2 个零。

如果 2 位数字:clks > 12,则警报(无效小时值)

如果 3 位数字:clks < (%59)(即检查最后 2 个字符),则 leftpad 为 1 个零 或 clks > (%59) ,然后 alert ('Invalid minutes value)

如果是 4 位数字:clks>12%(检查前 2 个字符),警报('无效小时值') 或 (clks>12% and clks>59%) ,然后 alert('invalid clock time') 或 (clks<12%) 和 (clks<59%) ,然后按原样接受数字。

如果5位:(而且都是数字),则alert('invalid clk time')

这些验证需要在脚本标签内完成。 (我使用的后端语言是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>

最佳答案

下面是一个在函数中实现的方法:

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 将是关于输入时间是否有效的 true 或 false 值。

关于javascript - 字符串时间验证(在 javascript 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4976304/

相关文章:

validation - JAX-WS RI 不强制执行 XSD 限制

xml - 有效的 XML、有效的架构。我哪里出错了?

wordpress - WooCommerce 中的 "Validation error: PayPal currencies do not match"

.net - 只有数字,数字可能是十进制(正则表达式)

r - 我怎么知道哪些 NA 是通过强制引入的?

javascript - 在 KnockoutJS 中使用 React 组件

javascript - 更改 div bgcolor onkeypress

javascript - IE8内存泄漏?

javascript - Meteor - 如果标记嵌套在 {{#with}} block 中,则 DOM 查询不起作用

javascript - 通过 jQuery 或 Javascript 应用于父窗口的外部 css 规则