我有一个接受时间(最多 5 个字符)的文本框,以及一个接受上午或下午值的下拉菜单。
我需要对输入到文本框中的字符串值执行一些验证,例如:
- 如果用户输入 9 => 应更改为 0900
- 9:3 => 0930
- 09:3 => 0930
- 93 => 警报('无效小时值)
- 115 => 0115
- 12 => 1200
- 应显示无效条目,例如 !@#$%^&*()<>?/~`,;'"""[]_-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/