关于限制文本框输入的值只能是0~9和.

时间:2022-12-08 21:11:47
如题所示,我要实现的是页面上有一文本框,只允许用户输入0.89等包含0~9的数字和小数点等值,其他的值统一不接受

想用键盘的ascii码值实现,但不知道如何实现,请教高手们解决!谢谢了

9 个解决方案

#1


function CheckIsZero(obj,msg)
//检查是否是0
{
if(obj.value==""||obj.value=="0")
{
alert(msg);
obj.focus();
return false;
}
return true;
}

function chkfloat(sId)
//是否小数
{
if(isNaN(sId.value))
{
alert("非法输入,输入格式应该为小数(如:xxxx.xx,123.40)!");
while(isNaN(sId.value))
sId.value=sId.value.substring(0,sId.value.length-1);
return false;
}
}

function chkint(sId)
//是否整数
{
if(/[^0-9]/g.test(sId.value))
{
alert("非法输入,输入格式应该为整数(如:3100)!");
while(/[^0-9]/g.test(sId.value))
sId.value=sId.value.substring(0,sId.value.length-1);
return false;
}
}

#2



<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>无标题文档 </title> 
<script>
function checkFormat(obj){
var str = myTrim(obj.value);
if(isNaN(str)){
obj.value = str.substring(0,str.length - 1);
}else{
obj.value = str;
}
}

function myTrim(str){
while(str.length > 0 && /\s/.test(str.charAt(0))){
str = str.substring(1);
}
while(str.length > 0 && /\s/.test(str.charAt(str.length - 1))){
str = str.substring(0,str.length - 1);
}
return str;
}
</script>
</head> 

<body> 
<input type="text" onkeyup="checkFormat(this)">
</table> 
</body> 
</html>

#3


楼上的用isNaN不能实现楼主的目标。isNaN只判断是否符合数字标准,意味着+-号,E符号的科学记数法都是合法的。而楼主要的是只输入0至9和小数点。另外,isNaN判断是否符合数字标准,但遇到类似IP地址就认为是非法,但IP地址也是由纯0-9和小数点组成。

所以我先不公布我的解决方法,因为需要楼主讲清楚,他是要输入“数字类型的内容”呢还是包含“数字和小数点”的所有形式都想要(例如IP地址),否则无法解答。

#4


<input type="text" name="float" onkeypress="KeyPress(this);">

<script language="javascript">
function KeyPress(obj)
{
var txtval=obj.value;
var key = event.keyCode;
if((key < 48||key > 57)&&key != 46)
{
event.keyCode = 0;
}
else
{
if(key == 46)
{
if(txtval.indexOf(".") != -1||txtval.length == 0)
event.keyCode = 0;
}
}
}
</script>

#5


引用 3 楼 dsdncoolie 的回复:
楼上的用isNaN不能实现楼主的目标。isNaN只判断是否符合数字标准,意味着+-号,E符号的科学记数法都是合法的。而楼主要的是只输入0至9和小数点。另外,isNaN判断是否符合数字标准,但遇到类似IP地址就认为是非法,但IP地址也是由纯0-9和小数点组成。 

所以我先不公布我的解决方法,因为需要楼主讲清楚,他是要输入“数字类型的内容”呢还是包含“数字和小数点”的所有形式都想要(例如IP地址),否则无法解答。

后半段:应该只是数字,不包括IP什么的(等LZ说清楚)

前半段:的确支持科学计数法,所以修改了一下

顺便纠正一个BUG(如果一直按住某个键不放,达不到LZ的要求,改了后可以了)
function checkFormat(obj)方法应该如下:

function checkFormat(obj){
var str = myTrim(obj.value);
while(isNaN(str) || /[^\d\.]/.test(str)){
obj.value = str.substring(0,str.length - 1);
str = myTrim(obj.value);
}
obj.value = str;
}

#6


用"我佛山人"表单验证 费这些事干嘛

#7


使用正则表达式

^\d*(\.\d*)?$/

#8


引用 3 楼 dsdncoolie 的回复:
楼上的用isNaN不能实现楼主的目标。isNaN只判断是否符合数字标准,意味着+-号,E符号的科学记数法都是合法的。而楼主要的是只输入0至9和小数点。另外,isNaN判断是否符合数字标准,但遇到类似IP地址就认为是非法,但IP地址也是由纯0-9和小数点组成。 

所以我先不公布我的解决方法,因为需要楼主讲清楚,他是要输入“数字类型的内容”呢还是包含“数字和小数点”的所有形式都想要(例如IP地址),否则无法解答。

支持

#9


引用 7 楼 sd2208464 的回复:
使用正则表达式 

^\d*(\.\d*)?$/

#1


function CheckIsZero(obj,msg)
//检查是否是0
{
if(obj.value==""||obj.value=="0")
{
alert(msg);
obj.focus();
return false;
}
return true;
}

function chkfloat(sId)
//是否小数
{
if(isNaN(sId.value))
{
alert("非法输入,输入格式应该为小数(如:xxxx.xx,123.40)!");
while(isNaN(sId.value))
sId.value=sId.value.substring(0,sId.value.length-1);
return false;
}
}

function chkint(sId)
//是否整数
{
if(/[^0-9]/g.test(sId.value))
{
alert("非法输入,输入格式应该为整数(如:3100)!");
while(/[^0-9]/g.test(sId.value))
sId.value=sId.value.substring(0,sId.value.length-1);
return false;
}
}

#2



<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>无标题文档 </title> 
<script>
function checkFormat(obj){
var str = myTrim(obj.value);
if(isNaN(str)){
obj.value = str.substring(0,str.length - 1);
}else{
obj.value = str;
}
}

function myTrim(str){
while(str.length > 0 && /\s/.test(str.charAt(0))){
str = str.substring(1);
}
while(str.length > 0 && /\s/.test(str.charAt(str.length - 1))){
str = str.substring(0,str.length - 1);
}
return str;
}
</script>
</head> 

<body> 
<input type="text" onkeyup="checkFormat(this)">
</table> 
</body> 
</html>

#3


楼上的用isNaN不能实现楼主的目标。isNaN只判断是否符合数字标准,意味着+-号,E符号的科学记数法都是合法的。而楼主要的是只输入0至9和小数点。另外,isNaN判断是否符合数字标准,但遇到类似IP地址就认为是非法,但IP地址也是由纯0-9和小数点组成。

所以我先不公布我的解决方法,因为需要楼主讲清楚,他是要输入“数字类型的内容”呢还是包含“数字和小数点”的所有形式都想要(例如IP地址),否则无法解答。

#4


<input type="text" name="float" onkeypress="KeyPress(this);">

<script language="javascript">
function KeyPress(obj)
{
var txtval=obj.value;
var key = event.keyCode;
if((key < 48||key > 57)&&key != 46)
{
event.keyCode = 0;
}
else
{
if(key == 46)
{
if(txtval.indexOf(".") != -1||txtval.length == 0)
event.keyCode = 0;
}
}
}
</script>

#5


引用 3 楼 dsdncoolie 的回复:
楼上的用isNaN不能实现楼主的目标。isNaN只判断是否符合数字标准,意味着+-号,E符号的科学记数法都是合法的。而楼主要的是只输入0至9和小数点。另外,isNaN判断是否符合数字标准,但遇到类似IP地址就认为是非法,但IP地址也是由纯0-9和小数点组成。 

所以我先不公布我的解决方法,因为需要楼主讲清楚,他是要输入“数字类型的内容”呢还是包含“数字和小数点”的所有形式都想要(例如IP地址),否则无法解答。

后半段:应该只是数字,不包括IP什么的(等LZ说清楚)

前半段:的确支持科学计数法,所以修改了一下

顺便纠正一个BUG(如果一直按住某个键不放,达不到LZ的要求,改了后可以了)
function checkFormat(obj)方法应该如下:

function checkFormat(obj){
var str = myTrim(obj.value);
while(isNaN(str) || /[^\d\.]/.test(str)){
obj.value = str.substring(0,str.length - 1);
str = myTrim(obj.value);
}
obj.value = str;
}

#6


用"我佛山人"表单验证 费这些事干嘛

#7


使用正则表达式

^\d*(\.\d*)?$/

#8


引用 3 楼 dsdncoolie 的回复:
楼上的用isNaN不能实现楼主的目标。isNaN只判断是否符合数字标准,意味着+-号,E符号的科学记数法都是合法的。而楼主要的是只输入0至9和小数点。另外,isNaN判断是否符合数字标准,但遇到类似IP地址就认为是非法,但IP地址也是由纯0-9和小数点组成。 

所以我先不公布我的解决方法,因为需要楼主讲清楚,他是要输入“数字类型的内容”呢还是包含“数字和小数点”的所有形式都想要(例如IP地址),否则无法解答。

支持

#9


引用 7 楼 sd2208464 的回复:
使用正则表达式 

^\d*(\.\d*)?$/