CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  JavaScript

高分问个关于文本框输入格式的问题

楼主billy36()2004-12-01 05:17:51 在 Web 开发 / JavaScript 提问

一个文本筐     type='text'   的这种有没有可能让这个文本框里有个小数点可以设定好格式能实现键盘输123根据设定好的格式数据变为1.23之类的,就是减少了输入时的那一个小数点,由于数据比较多所以速度会快很多。  
   
  记得FOXPRO里有这个功能就是那个格式,不知在网页上能不能也可以这样。感谢。 问题点数:50、回复次数:8Top

1 楼meizz(梅花雪)回复于 2004-12-01 08:38:05 得分 0

做了个小把戏,   不知能否满足楼主  
   
  <input   onblur="mm(this)">  
  <SCRIPT   LANGUAGE="JavaScript">  
  function   mm(e)  
  {  
      var   s   =   e.value.replace(/^\s*|\s*$/g,   "");  
      if(s=="")   return;  
      if(isNaN(s)){alert("输入的不是数字!");   e.select();}  
      if(s.indexOf(".")>-1)   return;  
      e.value   =   s.replace(/^(\d*)(\d{2})$/,   "$1.$2")  
  }  
  </SCRIPT>Top

2 楼lingyun2111(凌云)回复于 2004-12-01 09:07:28 得分 20

试试楼上兄弟的做法Top

3 楼manyou(他山之石【养万头猪,行万里路】)回复于 2004-12-01 09:10:46 得分 20

<input   onfocusout="this.value   =   parseFloat(this.value)/100">Top

4 楼manyou(他山之石【养万头猪,行万里路】)回复于 2004-12-01 09:13:00 得分 0

<input   onblur="this.value   =   parseFloat(this.value)/100">Top

5 楼meizz(梅花雪)回复于 2004-12-01 09:22:01 得分 5

To:   manyou(他山之石)   思路不错,   但是有BUG  
  <input   onblur="this.value   =   parseFloat(this.value)/100"   value="0.0012">  
  Top

6 楼zhaoxiaoyang(梅雪香@深圳)回复于 2004-12-01 11:50:17 得分 5

用下面这种方法试试  
  <html>  
  <head>  
  <title>无标题文档</title>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <script   language="javascript">  
  function   keydown(src){  
  var   e=window.event;  
  var   code=e.keyCode;  
  var   cursorPos=getPos(src);  
  if(code==8){   //退格  
  if(cursorPos==5   ||   cursorPos==8||   cursorPos==11   ||   cursorPos==14){  
  movenext(src,cursorPos,-1);  
  cursorPos-=1;  
  }else   movenext(src,cursorPos,0);  
  //alert();  
  var   range=setSelect(src,cursorPos-1);  
  range.text="0";  
  movenext(src,cursorPos,-1);  
  e.returnValue=false;  
  //src.focus();  
  return   false;  
  }else   if(code==46)   e.returnValue=false;  
  }  
  function   keypress(src){  
  var   e=window.event;  
  var   code=e.keyCode;  
  var   cursorPos=getPos(src);  
  if(!keyPressInt())   return   false;  
  if(cursorPos==4   ||   cursorPos==7||   cursorPos==10   ||   cursorPos==13){  
  movenext(src,cursorPos,1);  
  cursorPos   +=   1;  
  }  
  var   num   =   String.fromCharCode(code);  
  //alert(num);  
  if(checkInput(src,num,cursorPos)){  
  var   range=setSelect(src,cursorPos);  
  range.text=num;  
  if(cursorPos==3   ||   cursorPos==6||   cursorPos==9   ||   cursorPos==12)  
  movenext(src,cursorPos,2);  
  else   movenext(src,cursorPos,1);  
  }  
  e.returnValue=false;  
  return   false;  
  }  
  function   checkInput(src,num,pos){  
  var   val=src.value;  
  var   year=parseInt(val.substring(0,4),10);  
  var   month=parseInt(val.substring(5,7),10);  
  output.value+="num="+num+"       pos="+pos+"       val="+val   +   "       year="+year+"       month="+month;  
  output.value+="\r\n";  
  switch(pos){  
  case   0:   if(num!=1   &&   num!=2)   return   false;   break;  
  case   5:   if(num>1)   return   false;break;  
  case   6:   if(val.charAt(5)=="1"   &&   num>2   ||   val.charAt(5)=="0"   &&   num==0)    
  return   false;break;  
  case   8:   switch(month){  
  case   1:   case   3:   case   5:   case   7:   case   8:   case   10:   case   12:  
  case   4:   case   6:   case   9:   case   11:  
  if(num>3)   return   false;break;  
  case   2:   if(num>2)   return   false;break;  
  }break;  
  case   9:   var   char8=val.charAt(8);   switch(month){  
  case   1:   case   3:   case   5:   case   7:   case   8:   case   10:   case   12:  
  if(char8==0   &&   num==0   ||   char8==3   &&   num>1)   return   false;  
  case   4:   case   6:   case   9:   case   11:  
  if(char8==0   &&   num==0   ||   char8==3   &&   num!=0)   return   false;  
  case   2:   if(char8==0   &&   num==0)   return   false;  
  else   if(char8==2   &&   !(year%4==0   &&   year   %400==0)   &&   num>8)   return   false;  
  }break;  
  case   11:   if(num>2)   return   false;break;  
  case   12:   if(parseInt(val.charAt(11)+num)>23)   return   false;break;  
  case   14:   if(num>5)   return   false;break;  
  }  
  output.value+="return   true;";   output.value+="\r\n";  
  return   true;  
  }  
  function   setSelect(src,pos){  
  var   range   =   src.createTextRange();  
  range.moveStart('character',pos);    
  range.moveEnd('character',pos-src.value.length+1);    
  range.select();  
  return   range;  
  }  
  function   getPos(obj){  
  var   ml=obj.value.length;  
  var   pos=0;  
  var   rng=document.selection.createRange();  
  rng.moveEnd("character",ml);  
  try{  
  pos=ml-rng.text.length  
  }catch(e){}  
  return   pos;  
  }  
  function   movenext(src,pos,flag)  
  {  
  var   range   =src.createTextRange();  
  range.moveStart("character",pos+flag);  
  range.collapse(true);  
  range.select();  
  }  
  function   keyPressInt(){  
  var   e=window.event;  
  code=e.keyCode;  
  if(code   >=48   &&   code   <=57)     return   true;  
  else     {window.event.returnValue=false;return   false;}  
  }  
  function   checkPaste(){  
  window.event.returnValue=false;  
  }  
  function   initDate(){  
  var   date=new   Date();  
  var   year=date.getFullYear();  
  var   month=date.getMonth()+1;  
  var   day=date.getDate();  
  var   hour=date.getHours();  
  var   minu=date.getMinutes();  
  month=month<10?"0"+month:month;  
  day=day<10?"0"+day:day;  
  hour=hour<10?"0"+hour:hour;  
  minu=minu<10?"0"+minu:minu;  
  document.all.dateinput.value=year+"-"+month+"-"+day+"   "+hour+":"+minu;  
  movenext(document.all.dateinput,0,0);  
  }  
   
  </script>  
  </head>  
   
  <body   onload="initDate()">  
  <p   align=center>  
  <input   name="dateinput"   value="0000-00-00   00:00"   onkeydown="keydown(this)"   size="16"   maxlength="16"   type="text"   onFocus=""   onkeypress="keypress(this)"   onpaste="checkPaste()"   onDrag="checkPaste()"   oncut="checkPaste()"   onmousemove="checkPaste()">  
  </p>  
  <p><input   type="button"   value="clear"   onclick="javascript:output.innerText='';">  
  <textarea   id="output"   width="800"   height="600"   rows="30"   cols="100"></textarea>  
  </P>  
  <script   language="JavaScript">  
  <!--  
  dateinput.focus();  
  //-->  
  </script>  
  </body>  
  </html>  
  Top

7 楼billy36()回复于 2004-12-01 14:38:21 得分 0

试了以上各位的办法可以,基本上能满足需求  
   
  to     meizz(梅花雪)     我基本上最多到小数点2位,基本上没有这个问题吧.  
   
  我想加上长度的验证再来判断用那种小数点(/100或/10等等)应该就可以了。Top

8 楼billy36()回复于 2004-12-01 14:41:37 得分 0

但是有没有更为形象一点的就是文本框内有一个固定的小数点,输入数字时到了设定的位数就自动跳过去  
   
   
  呵呵有点吹毛求疵了Top

相关问题

  • 文本框中输入日期格式
  • 高分求(急)能实现限制输入时间格式的文本框
  • 请问怎样检测文本框输入的字符串是不是"000,000000"格式,解决后马上给分!
  • 如何改变文本框的输入数据格式?
  • 【SWT 有没有做“格式化输入”用的 文本框 ?】
  • 文本框(Text)如何设定指定的输入格式?
  • 文本框格式
  • 如何验证文本框里输入的格式必须是要求个格式:数字-数字(在线等待60分钟)
  • 如何用Javascript判断文本框中输入的是不是日期格式
  • C#中如何自定义文本框输入的字符串格式

关键词

得分解答快速导航

  • 帖主:billy36
  • lingyun2111
  • manyou
  • meizz
  • zhaoxiaoyang

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo