我做了个页面想试一下用正则限制只能输入数字,发现个问题,在前台写 onkeydown="value=value.replace(/[^\d]/g,'')" 这个的话,文本框里输字母第一个(也只有第一个)字母会显示出来,然后随着你不断的输,这个字母一直会变成你输的最后一个字母,这个是怎么回事?如果我把属性改成onkeyup的话,输进去的也会显示出来,但是显示了一下就消失了,我想要的效果是如果限制数字的话,那就跟本输不进去,不要显示出来,有什么方法可以实现这个吗?
还有,好像在页面上实现这个必须得用JS,但是如果客户JS禁用的话那就失效了,所以是不是最稳妥最好的方法是不在控件上限制而是提交的时候在后台上验证,这是最简单也最保险的做法?
最后,在C#的后台怎么用正则?tb_t.Text = "hello";这个变量里的值要是想用正则验证是不是数字的话怎么写?

解决方案 »

  1.   

    使用这个正则,只能输入数字,很好:
    <input name="inputx" type="text" id="nputx" size="20" onkeyup="this.value=this.value.replace(/[^0-9]/g,'');">
      

  2.   

    可以用onkeypress试试
    你用keydown的话对event.keyCode做判断就好了
      

  3.   

    二楼和我写的有区别吗?三楼,我试了,和DOWN是一样的,郁闷!!
      

  4.   

    onkeyup是在释放按键是才出发,这应该更好;因为onkeydown之后再发生onkeyup,之后就没有键盘事件发生了,所以在onkeyup这里处理比较切底,当然在你这里需求看不出区别来,所以哪个都满足要求
      

  5.   


    <input type="text" onkeydown="if(event.keyCode==8)return true;if(event.keyCode<48||event.keyCode>57)return false;">