请教大家,想用js实现这样一个功能:
页面上一个显示时间的文本框(要求 hh:mm:ss 格式的),只对数字键有效,当用户每输入两位数字时,自动补上时间分隔符“:”号,并对该数字是否大于59进行验证(alert就好,有点儿像手动设置IP的效果),期待高人解答,谢谢!
页面上一个显示时间的文本框(要求 hh:mm:ss 格式的),只对数字键有效,当用户每输入两位数字时,自动补上时间分隔符“:”号,并对该数字是否大于59进行验证(alert就好,有点儿像手动设置IP的效果),期待高人解答,谢谢!
可以用正则表达式判断输入的数字是否合法.
若不合法则alert,否则继续下一个输入
$=function (id){
return document.getElementById(id);
}
var timer=0;//存储计时器ID
<!--当获取焦点时执行-->
objOnFocus=function(){
timer=setInterval(function(){
if($('txtTimeFormat').value.length===2||$('txtTimeFormat').value.length===5){
$('txtTimeFormat').value+=":";
}
},50);
}
<!--当失去焦点时执行-->
objLostFocus=function(){
clearInterval(timer);
}</script>
<input type="text" id="txtTimeFormat" onfocus="objOnFocus()"/>
</body>
2)控件失去焦点的时候,进行格式校验
<SCRIPT language=javascript>
<!--
//添加冒号
function add(){
var timeObj=document.getElementById("time").value;if(timeObj.length==2||timeObj.length==5){
document.getElementById("time").value=timeObj+":";
}}//校验格式
function checkFormat(){
var patm=/^([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/;
if(!patm.exec(document.getElementById("time").value)){
document.getElementById("time").focus();
document.getElementById("time").select()
alert("格式不正确 hh:mm:ss");
}
}
//-->
</SCRIPT><input type="text" id="time" onkeyup="add();" maxlength="8" onblur="checkFormat()"/>
例如:
1) 不能让用户输入英文
2) 不能让用户复制、粘贴不合法的数据当文件输入框,失去焦点时,必须进行校验。
使用时间正则表达式:
^([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$,因为 javascript的onkeyup() 事件,当用户输入速度过快时不是很可靠,所以必须加一个可靠的onblur()事件时间格式的进行校验。
<INPUT TYPE="text" id="test"><SCRIPT LANGUAGE="JavaScript">
<!--
window.onload = function(){
document.getElementById("test").onkeyup = function(){
var reg1=/^\d{2}$/;
var reg2=/^\d{2}:(\d{2})$/;
var reg3=/^\d{2}:\d{2}:(\d{2})$/;
if (this.value.length>8)
{
this.value = this.value.substr(0,8);
return false;
}
if (reg1.test(this.value)&&this.value>23)
{
alert("hour should be small then 23");
return ;
}
if (reg2.test(this.value)&&RegExp.$1>59)
{
alert("minute should be small then 59");
return;
}
if (reg3.test(this.value)&&RegExp.$1>59)
{
alert("second should be small then 59");
return;
}
if (/^\d{2}$/.test(this.value)||/^\d{2}:\d{2}$/.test(this.value))
{
this.value = this.value+":";
}
}
}
//-->
</SCRIPT>