求助:javascript实现自动完成时间格式的代码

IloveChinatoo 2009-12-26 09:10:14
请教大家,想用js实现这样一个功能:
页面上一个显示时间的文本框(要求 hh:mm:ss 格式的),只对数字键有效,当用户每输入两位数字时,自动补上时间分隔符“:”号,并对该数字是否大于59进行验证(alert就好,有点儿像手动设置IP的效果),期待高人解答,谢谢!
...全文
163 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
benjaminwu198818 2009-12-27
  • 打赏
  • 举报
回复
我楼上写的也是思路…
friendly_ 2009-12-27
  • 打赏
  • 举报
回复

<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)&®Exp.$1>59)
{
alert("minute should be small then 59");
return;
}
if (reg3.test(this.value)&®Exp.$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>
IloveChinatoo 2009-12-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 kaoh1631 的回复:]
上面的是我的思路,楼主可以增加一些校验JS ,完善上面的代码。
例如:
1) 不能让用户输入英文
2) 不能让用户复制、粘贴不合法的数据

当文件输入框,失去焦点时,必须进行校验。
使用时间正则表达式:
^([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$

,因为 javascript的onkeyup() 事件,当用户输入速度过快时不是很可靠,所以必须加一个可靠的onblur()事件时间格式的进行校验。


[/Quote]
解释得很详细,我正想问onblur()事件有什么用呢,非常感谢。一定给分。
Thinking_In_IT 2009-12-27
  • 打赏
  • 举报
回复
上面的是我的思路,楼主可以增加一些校验JS ,完善上面的代码。
例如:
1) 不能让用户输入英文
2) 不能让用户复制、粘贴不合法的数据

当文件输入框,失去焦点时,必须进行校验。
使用时间正则表达式:
^([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$

,因为 javascript的onkeyup() 事件,当用户输入速度过快时不是很可靠,所以必须加一个可靠的onblur()事件时间格式的进行校验。

Thinking_In_IT 2009-12-27
  • 打赏
  • 举报
回复
接分分~ 我的思路是这样:

1)按键的时候自动补冒号
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()"/>

IloveChinatoo 2009-12-27
  • 打赏
  • 举报
回复
多谢楼上,目前实现了补“:”的需求,但没有对输入进行验证,还是可以输入非数字和大于60的数字。期待更完善的解决。
benjaminwu198818 2009-12-26
  • 打赏
  • 举报
回复
<script type="text/javascript">
$=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>
IloveChinatoo 2009-12-26
  • 打赏
  • 举报
回复
楼上也没理解我的意思,我并不需要计时器啊,文本框里的值是用户随便输入的,我只不过想实现对用户的输入进行验证和自动补":"号。不过你说的利用onchange事件也提供了一种思路。我再想想,也还请大家继续帮帮忙啊!!
benjaminwu198818 2009-12-26
  • 打赏
  • 举报
回复
可以利用onfocus事件加上一个计时器函数就可以实现了,当文本框中获取了光标那么计时器开始启动,陆续进行判断,当光标离开后,又停止计时器。(因为html中的onchange事件是在值改变,失去光标后才执行的,并不是当值一改变就马上执行的)
IloveChinatoo 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tianweishuiguo 的回复:]
可以让光标停留在文本框中,等待输入,
可以用正则表达式判断输入的数字是否合法.
若不合法则alert,否则继续下一个输入
[/Quote]
1楼没有仔细看清楚我的需求,除了对数字进行验证,还要每输两位数字,自动补时间分隔符":"啊。不过还是先谢谢了。
东大坡居士 2009-12-26
  • 打赏
  • 举报
回复
可以让光标停留在文本框中,等待输入,
可以用正则表达式判断输入的数字是否合法.
若不合法则alert,否则继续下一个输入
asprain论坛是一个适合于各中小学、中专、技校、职高建设校园论坛、师生交流论坛,一些教科研部门、公司企业建设内部论坛、IT技术爱好者建设技术交流论坛的免费论坛程序。它有两个版本,分别是asp+Access版和asp+sqlServer版,功能完全一致,建站者可以根据自己的需要选用不同的版本。 Asprain论坛体积小巧,但是功能完整。它前端脚本基于jquery框架,跨浏览器性能出色。对IE6、IE7、IE8、firefox、Chrome、Saferi、Opera七种主流浏览器有良好的兼容性。可以轻松松换肤,制作个性皮肤也很方便,只要修改几个css就可以了。 asprain论坛使用了大量的ajax效果,不仅能够很有效地节省数据流量、应付网络拥堵,而且极酷的脚本动画和遮罩框效果也能使用户获得更好的应用体验。在asprain里,用户切换隐身/在线状态、更换自己的头像、版主删除水帖、加亮优秀帖等很多操作,都只要一键完成,不需要页面刷新或者跳转。asprain论坛还支持版主批量删帖、转移帖子、将帖子设为精华等等操作,并支持用户对帖子的评分、举报帖子等功能。 asprain论坛使用了一个非常独创的可视化UBB在线编辑器,实现了真正的所见即所得的UBB编辑,安全与便捷兼顾。在asprain论坛的在线编辑器中,可以做到一键插入本地图片、一键完成远程图片上传、轻松插入优酷网等视频网站上的的视频地址、插入回复可读、付费可读等标记,还可以插入程序代码。asprain论坛使用了改进版的chili插件,UBB标签[code]****[/code]能够很好地对javascript、php、asp、sql、css、html、C++、C#、Delphi、java、locus这十种开发语言进行语法高亮(这个功能对IT技术爱好者建设技术交流论坛非常有用)。 asprain论坛自带无图版、rss订阅等功能,即将推出wap版(手机版)。asprain支持滚动公告条、帖子引用通告、邮件群发、自定义论坛访问统计代码等功能,支持下载统计、支持文件反盗链、支持支付宝、财付通绑定。用户可以通过支付宝、财付通两种在线支付通道进行站内积分充值。站内积分可以用于悬赏求助、购买付费可读帖的阅读权、下载权等。这既方便了用户,也给站长增加了收入来源。 asprain自带五套漂亮的皮肤,表情和头像都非常可爱搞笑,而且可以轻松更换。网站头也可以根据需要轻松修改。asprain论坛支持多种论坛广告形式,包括页头广告、页脚广告、帖子中的文字广告、帖子右边的图片广告、全屏浮动广告、左右对联广告、页面右下角的弹出广告等。所有的广告位都支持循环轮播。也就是说,你可以在同一个广告位中插入十几条广告内容,然后前台会自动从这十几条预设广告中轮流播送。循环轮播广告比固定广告更容易抢得眼球,不易带来视觉疲劳。 如果你想学习研究asp编程技术或者jquery开发技术,也不妨来下载这个程序。 asprain论坛的后台界面也很漂亮,模仿了yeah邮件的标签功能,而且还可以搜索后台功能。 这个程序初始管理员用户名是Admin,前台密码和后台密码都是987654321。安装方法是:把下载包里的两个文件install.asp和asprain.asa解压出来,放到服务器空间根目录上,然后访问http://yourdomain/install.asp,然后填写几个表单,程序会自动把文件解压出来的。这样可以使论坛安装更方便,因为不需要再把几百个小文件通过ftp上传了,保需要把两个大文件传上去就

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧