如何限制INPUT中只能输入数字?

killerdanny 2005-04-07 06:25:45
数字中可以包括小数点和负号,且负号只能出现在最左侧,小数点和负号只能出现一次。
需要在onkeypress中做验证
...全文
9430 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiqunet 2005-04-18
  • 打赏
  • 举报
回复


下面是两种判断方法,一个用了正则,另一个用常规方法

<script languang="javascript">
function checkkey(v){
var kc=event.keyCode;
if (kc ==43 ||kc ==45 ||kc ==46 ||kc ==13 || (kc >47 && kc <58)){
//只允许输入“+”“-”“.”“回车”“0-9”等字符。

if(kc==46&&v.indexOf('.') >-1)event.returnValue = false;
//不允许输入多个小数点

if((kc==43||kc==45)&&(v.indexOf('+')>-1||v.indexOf('-')>-1||v.length>0))event.returnValue = false;
//不允许输入多个正负号,不允许在数字中间输入正负号

}else{
event.returnValue = false;
alert("请输入数字");
}
}


function checkvalue(obj){
if(!/^[+|-]?\d+\.?\d*$/.test(obj.value)&&obj.value!=''){
alert('你输入的不是数字,或关闭输入法后再输入');
obj.select();
}
}
</script>


<br>
用正则<input name="s" onblur="checkvalue(this)"><br>
用常规<input onkeypress="checkkey(value);" onblur="value=value=='+.'||value=='-.'?value+0:value">
killerdanny 2005-04-08
  • 打赏
  • 举报
回复
谢谢上面的兄弟帮忙,上面这些都不能满足需求。

下面的代码,有两个问题:

1。负号可以输入多次,而且不能限制只能在左边
2。如果小数点先输入,负号不能输入

能不能在这个代码的基础上进行修改达到需求?

<INPUT TYPE="text" class="inputborder1" name="c_11" onkeypress="checkIsFloat(this.value);" style="width:99%;text-align:right;font-weight:bold;ime-mode:disabled" >

<SCRIPT LANGUAGE="JavaScript">
<!--
function checkIsFloat(svalue){
var nc=event.keyCode;
if((nc>=48) && (nc<=57) ){
}else if((nc==46)||(nc==45)){
var s=svalue;
for(var i=0;i<s.length;i++){
if(s.charAt(i)=='.'){
event.keyCode=0; return;
}
}
}else{
event.keyCode=0;return;
}
}

//-->
</SCRIPT>
lawyu 2005-04-07
  • 打赏
  • 举报
回复
只能输入数字的:
<input onkeyup="value=value.replace(/[^\d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d.]/g,''))" ID="Text2" NAME="Text2">

只能输入数字和小数点:
<input onkeyup="value=value.replace(/[^\d.]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d.]/g,''))" ID="Text2" NAME="Text2">
qiqunet 2005-04-07
  • 打赏
  • 举报
回复

<script>
function check(str)
{if(!/^[+|-|\d{1}]\d+[\.|\d{1}]\d+$/.test(str))alert('你输入的可能不是数字');}
</script>
<input onchange="check(this.value)" >
myvicy 2005-04-07
  • 打赏
  • 举报
回复
刚才的有点问题,这个更好点。
<input name=test onkeyup="checkvalue(this.value);" onblur="">
<script>
var str;
function checkvalue(mytest)
{
if(/^(-?\d+)(\.|\.\d+)?$/.test(mytest))str=mytest;
document.all.test.value=str;
}
</script>
myvicy 2005-04-07
  • 打赏
  • 举报
回复
<input name=test onkeyup="checkvalue(this.value);">
<script>
var str;
function checkvalue(mytest)
{
if(/^(-?\d+)(\.{1}|\.\d+)*$/.test(mytest))str=mytest;
document.all.test.value=str;
}
</script>
测试过了。
popcode 2005-04-07
  • 打赏
  • 举报
回复
isNan

87,910

社区成员

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

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