<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>保留小数位数</title>
<script type="text/javascript">
function SaveFloat(sCtrId,nums)
{
if(event.keyCode==8 || event.keyCode==37 || event.keyCode==39)
{
return;
} var s=document.getElementById(sCtrId).value;
if(s==null || s==undefined || s=="") return;
if(nums=="1")
{
if(/[^0-9\.]/.test(s))
return "invalid value";
s=s.replace(/^(\d*)$/,"$1.");
s=(s+"0").replace(/(\d*\.\d)\d*/,"$1");
}
if(nums=="2")
{
if(/[^0-9\.]/.test(s))
return "invalid value";
s=s.replace(/^(\d*)$/,"$1.");
s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1");
}
if(nums=="3")
{
if(/[^0-9\.]/.test(s))
return "invalid value";
s=s.replace(/^(\d*)$/,"$1.");
s=(s+"000").replace(/(\d*\.\d\d\d)\d*/,"$1"); }
s=s.replace(".",".");
var re=/(\d)(\d{3},)/;
while(re.test(s))
s=s.replace(re,"$1,$2");
s=s.replace(/,(\d\d)$/,".$1");
var ary = s.split('.');
if (ary.length >= 2) {
if (ary[0] == "") {
ary[0] = 0;
}
var temp = ary[1];
if (ary[1].length > nums) {
ary[1] = ary[1].substring(0, nums);
}
document.getElementById(sCtrId).value= ary[0] + "." + ary[1];
return;
}
document.getElementById(sCtrId).value=s.replace(/^\./,"0.");
}
</script>
</head>
<body>
输入数字: <input id="Text1" type="text" onkeyup="SaveFloat(this.id,2)"/>
</body>
</html>
代码奉上,我这个可以及时的保留小数位数,但是每输入一个数字,光标就自动跑到最后面去了,如果里面已经有值了,做了修改每次都自动跑到最后面去,体验效果不好! 有高人赐教下吗?
解决方案 »
- 超级BT的JS写法。
- window.open()函数有点不太懂
- javascript urldecode乱码
- 关于用js实现页面正在加载的实现 ???总达不到理想的效果
- 新人求助HTMLELement对像下clientTop,clientLeft,scrollTop,scrollLeft属性的区别,最好可以有程序来说明哦。
- 如何在DATAGRID中,点编辑按钮,文本框自动获得焦点,100分在线等,马上结贴
- 小弟第一次写 javascript 请问怎么在javascript文件里加入vbscrit脚本
- 怎样把整形转为字符串类型
- 字符串问题---高手进
- 我是javascript菜鸟
- 这段代码无法在FF下显示 (在HTML内嵌入视频)
- onresize事件,浏览器兼容搞死人啊
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
function SaveFloat(ev,sCtrId,nums)
{
var ent=ev||window.event; //要兼容浏览器,改了一下
if(ent.keyCode==8 || ent.keyCode==37 || ent.keyCode==39)
{
return;
} var s=document.getElementById(sCtrId).value;
if(s==null || s==undefined || s=="") return;
if(nums=="1")
{
if(/[^0-9\.]/.test(s))
return "invalid value";
s=s.replace(/^(\d*)$/,"$1.");
s=(s+"0").replace(/(\d*\.\d)\d*/,"$1");
}
if(nums=="2")
{
if(/[^0-9\.]/.test(s))
return "invalid value";
s=s.replace(/^(\d*)$/,"$1.");
s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1");
}
if(nums=="3")
{
if(/[^0-9\.]/.test(s))
return "invalid value";
s=s.replace(/^(\d*)$/,"$1.");
s=(s+"000").replace(/(\d*\.\d\d\d)\d*/,"$1"); }
s=s.replace(".",".");
var re=/(\d)(\d{3},)/;
while(re.test(s))
s=s.replace(re,"$1,$2");
s=s.replace(/,(\d\d)$/,".$1");
var ary = s.split('.');
if (ary.length >= 2) {
if (ary[0] == "") {
ary[0] = 0;
}
var temp = ary[1];
if (ary[1].length > nums) {
ary[1] = ary[1].substring(0, nums);
}
document.getElementById(sCtrId).value= ary[0] + "." + ary[1];
return;
}
document.getElementById(sCtrId).value=s.replace(/^\./,"0.");
}
var fun=function(tf){ //加上一个函数。内容选中。
setTimeout( function() {tf.select();}, 100);
}
</script>
</head>
<body>
输入数字: <input id="Text1" type="text" onchange="fun(this)" onkeyup="SaveFloat(event,this.id,2)"/></body>
</html>
能不能在ie中可以通过啊,这个在ff中是可以的
var ent=ev||window.event; //要兼容浏览器,改了一下