如何控制文本框中只可输入两位小数的数字

hanweiwei_1 2010-03-26 03:18:03
如何控制文本框中只可输入两位小数的数字?
注意不是输完后check,而是输的时候如果输字母,文本框中不会出现字母
下面是只可输入两位数字的例子,但带小数点的不会
<input type="text" maxlength="2" onkeyup="value=value.replace(/[^\d]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">
...全文
10490 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sohighthesky 2010-03-29
  • 打赏
  • 举报
回复
function myNumberic(e,len) {
var obj=e.srcElement || e.target;
var dot=obj.value.indexOf(".");//alert(e.which);
len =(typeof(len)=="undefined")?2:len;
var key=e.keyCode|| e.which;
if(key==8 || key==9 || key==46 || (key>=37 && key<=40))//这里为了兼容Firefox的backspace,tab,del,方向键
return true;
if (key<=57 && key>=48) { //数字
if(dot==-1)//没有小数点
return true;
else if(obj.value.length<=dot+len)//小数位数
return true;
} else if((key==46) && dot==-1){//小数点
return true;
}
return false;
}


<input type="text" id="ttext" class="ime" onkeypress="return myNumberic(event)" />

.ime 	{ime-mode:disabled;}
hanweiwei_1 2010-03-29
  • 打赏
  • 举报
回复
10楼几乎符合我的要求了,谢谢
hanweiwei_1 2010-03-29
  • 打赏
  • 举报
回复
根据各位的答案我整理出了我要的答案,如下
function checknum(obj)
{ if(/^\d+\.?\d{0,2}$/.test(obj.value)){
obj.value = obj.value;
}else{
obj.value = obj.value.substring(0,obj.value.length-1);
}

}
<input type="text" onkeyup="checknum(this);"/>
prototyper 2010-03-26
  • 打赏
  • 举报
回复

<input type="text" onkeyup="this.value=/^\d+\.?\d{0,2}$/.test(this.value) ? this.value : ''">
unicode 2010-03-26
  • 打赏
  • 举报
回复
function check1(obj)
{
var v = obj.value;
var reg = /^\d*\.(\d{2})$/gi;
if (reg.test(obj.value))
{
return false;
}
return true;
}
function check2(obj)
{
var v = obj.value;
obj.value = v.replace(/[^\d\.]/g,'')
}

<input type="text" onkeypress="return check1(this);" onkeyup="check2(this);"/>
dxsky_sky 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hanweiwei_1 的回复:]
谢谢你的回复,虽然不是我想要的答案
我希望输的时候就不可以输除数字和点之外的任何字符
[/Quote]
那还鸟个两位小数控制,输个'http:\\bbs.csdn.net‘还有小数啊.
teerhu 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hanweiwei_1 的回复:]
谢谢你的回复,虽然不是我想要的答案
我希望输的时候就不可以输除数字和点之外的任何字符
[/Quote]


onkeydown='if((keyCode>57 ||keyCode<48)&&keyCode!=46) return false'
hanweiwei_1 2010-03-26
  • 打赏
  • 举报
回复
谢谢你的回复,虽然不是我想要的答案
我希望输的时候就不可以输除数字和点之外的任何字符
chollaflower 2010-03-26
  • 打赏
  • 举报
回复
1、判断输入的是不是数字(建议用onchange事件判断每一个输入的字符)
2、判断是否有小数点(且只有一个)
3、判断小数点后有几个字符(lastInexOf)
这种方法可以实现,但很麻烦
楼主最好在onchange触发时用正则匹配输入框中的字符串
passself 2010-03-26
  • 打赏
  • 举报
回复

$(document).ready(function(){
$("#test").blur(function(){
var value = $(this).val();
var length = $(this).val().length;
var first = value.indexOf(".");//判断第一个小数点所在位置
var last = value.lastIndexOf(".");//判断最后一个小数点所在的位置
var temp_length = value.split(".").length - 1;//含有.的个数
if(!isNaN(value) && (temp_length == 1) && (first==last) && (length - last ==3) ){
alert("yes");
}else{
alert("no");
}
});
});

刚才看错了
hwoarangzk 2010-03-26
  • 打赏
  • 举报
回复
别都写在input里面
去写一个函数,让keyup和paste事件都指向这个函数
在函数里判断你的规则,再改变的你value
passself 2010-03-26
  • 打赏
  • 举报
回复

$(document).ready(function(){
$("#test").blur(function(){
var value = $(this).val();
if(!isNaN(value)&& (value.length < 3)){
alert("yes");
}else{
alert("no");
}
});
});

html:

<input type="text" id="test" />

我用的jquery
passself 2010-03-26
  • 打赏
  • 举报
回复
首先判断输入的是数字,其次要判断输入的位数要两位一下就可以了

87,914

社区成员

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

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