Javascript函数
所以我有一个文本框,允许最多输入5个字符 用户应在文本框中以hh:mm或hhmm格式输入时间 假设用户输入1:2:3或1:2等,则应显示警报消息(“时间格式不正确”) 是否有任何方法可以检查除第一次以外的所有其他发生的:,并提醒用户 (这需要在javascript函数中完成) 这是我用来检查文本框中输入的非数字值(不包括:)的方法:Javascript函数,javascript,string,textbox,full-text-search,Javascript,String,Textbox,Full Text Search,所以我有一个文本框,允许最多输入5个字符 用户应在文本框中以hh:mm或hhmm格式输入时间 假设用户输入1:2:3或1:2等,则应显示警报消息(“时间格式不正确”) 是否有任何方法可以检查除第一次以外的所有其他发生的:,并提醒用户 (这需要在javascript函数中完成) 这是我用来检查文本框中输入的非数字值(不包括:)的方法: <script type='text/javascript'> function getClks(){ ... var
<script type='text/javascript'>
function getClks(){
...
var re=":";
var found = clks.match(re);
if (clks.match(/^[0-9:]/)){
alert('Invalid time value');
}
if (found=:){
var splitime = clks.split(":");
var hours = splitime[0];
var mins = splitime[1];
......
}
}
</script>
函数getClks(){
...
var re=“:”;
找到的var=时钟匹配(re);
如果(时钟匹配(/^[0-9://)){
警报(“无效时间值”);
}
如果(找到=:){
var splitime=clks.split(“:”);
var小时数=拆分时间[0];
var mins=splitime[1];
......
}
}
尝试使用此jquery插件:
它将屏蔽您的文本框:
$("#hour").mask("99:99");
@alexl的jQuery插件可能已经足够了,但为了完整性起见 在jQuery上下文之外,我会使用,
/([0-9][0-9]):([0-9][0-9])/
,并像这样测试数字字符串:
var timestr = /* .. get the text .. */
if(timestr.match(/([0-9][0-9]):([0-9][0-9])/) {
console.log('Good number string');
} else {
console.log('Bad number string');
}
除非你有很好的理由改变用户的输入。我建议只提醒用户他们的输入与正确的格式不匹配 如果确实要删除字符,可以将该函数与一些正则表达式一起使用,以删除额外的
:
字符
您可以使用或来测试输入的格式是否正确
类似于
/^\d{1,2}:\d{2}$/
的东西应该可以用。其他人都解释了该怎么做。这里有一个更具体的例子说明如何使用它
var regex = new RegExp("\\d{2}[:]\\d{2}");
if (regex.test(input)) {
var array = input.split(":");
var hours = array[0];
var minutes = array[1];
} else {
alert("malformed input");
}
你可以这样做 加价
<input id="myinput" maxlength="5" type="text" />
<input type="button" onclick="test()" value="test" id="testbtn" />
示例=>谢谢alex:)但不幸的是,我无法在代码中使用jQuery。有什么字符串方法可以帮助我实现它吗?-1使用jQuery依赖性和jQuery插件?糟糕透了。jQuery插件完全是过火了,使用起来很可笑。你忘了
RegExp.prototype.test
@Raynos,是的,我做了,我也没有检查时间是否有效。我可能应该使用/^(\d{1,2}):(\d{2})$/然后添加一些功能来检查$1<24
和$2<60
。谢谢..但是你能解释一下这是怎么回事吗?var re=newregexp(“^([0-1][0-9]|[2][0-3])(:([0-5][0-9]){1,2}$”;我对正则表达式不太熟悉,这就是为什么。([0-1][0-9]|[2][0-3])=>00和23之间的2位数字(即24不合适):=>两位数后必须有冒号。。。([0-5][0-9])=>00和59之间的2位数字(即60不正常)和。。最重要的..^=>regexp开始,$=>regexp endsok。我想我能理解一点。但是我的代码中有一个12小时的格式,那么我该如何编写它呢?另外,我也在为以hhmm格式输入的用户做一个单独的验证。不幸的是,在我的代码中,冒号不是必须的。这就是为什么,我只想能够计算冒号的数量,如果它大于1,则显示警报。任何建议?/(?:0?\d|1[012]):?[0-5][0-9]/
都应该对你有用,只要你不在乎秒数。它将匹配12:00和0:00,不确定您对值有多挑剔。
var re = new RegExp("^([0-1][0-9]|[2][0-3])(:([0-5][0-9])){1,2}$");
var myInput = document.getElementById('myinput');
function test(){
alert(re.test(myInput.value)); //alerts true if the input is well-formed
}