//////////////
/*
*只允许输入数字值(整数)*调用方法:  OnKeyPress="javascript:return OnlyInt();" 
**/
function OnlyInt(){
if (event.keyCode == 13)
        return true
   if (event.keyCode < 48 || event.keyCode > 57){
alert( "只能输入数字!" );
        return false;
        
    }else
        return true;
}

解决方案 »

  1.   

    感谢回答。不过你试过了吗?不行啊,你的代码跟我贴出来的原则上一样的,只不过是你弹出对话框,而我的让keyCode = 0而已。切换到中文输入法,中文还是照样输入。请帮忙
      

  2.   

    用正则表达式解决:<input    name=txt1    onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}">
      

  3.   

    onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
      

  4.   

    to yhlinux(一叶惊秋) :你的代码行不通啊,是了,test()是自己写的还是?
    to gzty(风逍遥) ( ) :你的也不行啊在网上搜到这个:
    <script>
        function regInput(obj, reg, inputStr)
        {
            var docSel    = document.selection.createRange()
            if (docSel.parentElement().tagName != "INPUT")    return false
            oSel = docSel.duplicate()
            oSel.text = ""
            var srcRange    = obj.createTextRange()
            oSel.setEndPoint("StartToStart", srcRange)
            var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
            return reg.test(str)
        }
    </script>
    <BODY>
    <input onkeypress="return regInput(this,/^[0-9]*$/,String.fromCharCode(event.keyCode))" 
    onpaste="return regInput(this,/^[0-9]*$/,window.clipboardData.getData('Text'))" 
    ondrop="return regInput(this,/^[0-9]*$/,event.dataTransfer.getData('Text'))">
    但是对于中文输入法的情况依然没办法,中文还是照样输入。
      

  5.   

    function checkInput(obj)
    {
    obj.value = obj.value.replace(/([\d]*)(\D*)/g,"$1") ;
    }
    <input id="Text1" type="text" onchange="javascript:checkInput(this);"/>
      

  6.   

    to ilik(煊烨※涅磐) :你测试过了吗?不行啊,恳求各位达人测试一下先啊to BeRush(艾威): <script>
        function regInput(obj, reg, inputStr)
        {
            var docSel    = document.selection.createRange()
            if (docSel.parentElement().tagName != "INPUT")    return false
            oSel = docSel.duplicate()
            oSel.text = ""
            var srcRange    = obj.createTextRange()
            oSel.setEndPoint("StartToStart", srcRange)
            var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
            return reg.test(str)
        }
    </script>
    <BODY>
    <input onkeypress="return regInput(this,/^[0-9]*$/,String.fromCharCode(event.keyCode))" 
    onpaste="return regInput(this,/^[0-9]*$/,window.clipboardData.getData('Text'))" 
    ondrop="return regInput(this,/^[0-9]*$/,event.dataTransfer.getData('Text'))">这个可以解决复制之类的问题,但是对待中文输入还是没法
      

  7.   

    我有一个思路,但是我现在属于新手,程序没有写出来(主要是很多东西不知道怎么用JavaScript些出来)中文应当是占用了两个字节的内容,这个是没有问题吧?我们把text中的内容+1(我说的是不是字符串的追加,而是真的加上1!我知道在php和C中是可以实现的)或者使用位运算符,进行运算一下(比如说,把第一位去掉,在最后一位上补零),我们得到的东西是会发生不可逆转的变动的!(当然,如果你记录了变动的信息,这个也是可以还原的)而汉字的情况下,这样就不会判断是一个汉字了!!当然,类似上面的东西我门可以使用另外一种方式,虽然也是原理,而且不知道能不能实现。不过这个在JSP和C中,绝对能实现,我见到过这样的程序。原理就是把传递的数据进行分割,分割出高八位和第八位。ASCII使用的是只有第八位对不?如果高八位都是零,然后第八位的内容可以匹配到数字部分,不就是实现了楼主的要求了么?
      

  8.   

    自己贴一个,感谢各位大侠,不知道有没有更好的<html><head><script type="text/javascript">function _onlyNum(){ for ( var vii = 0; vii < _onlyNum.arguments.length; vii++ ){
    if ( a = _onlyNum.arguments[vii] ) {
    if ( o = document.getElementById(a) ) {
    with (o) {
    style.imeMode = "disabled"
    onchange = function (){
    value = value.replace(/\D/g,'')
    }
    onkeypress = function (){
    return (/[\d]/.test(String.fromCharCode(event.keyCode)))
    }
    ondrop = function (){
    return /\D/g.test(event.dataTransfer.getData("text")) ? false : true
    }
    onbeforepaste = function (){
    onpaste = function (){return /\D/g.test(clipboardData.getData('text')) ? false : true}
    }
    }
    }
    }
    }
    }
    </script><body onload="_onlyNum('tt','tt1')">
    <input name="tt"> <input name="tt1">
    </body></html>
      

  9.   

    测试过的,复制的也可以啊,可以输入,但是在单元格失去焦点之后会把输入的非数字的过滤掉的
    <script>
    function checkInput(obj)
    {
    obj.value = obj.value.replace(/([\d]*)(\D*)/g,"$1") ;
    }
    </script>
    <input id="Text1" type="text" onchange="javascript:checkInput(this);"/>  
      

  10.   

    to ilik(煊烨※涅磐):今天在IE上测试了一下,确实可以,我之前是在EDITPLUS上浏览的,不行,不知道在firefox下行不行。大家还有没有什么高见?没有就结贴咯。
      

  11.   

    如果只要数字,那么数字的ascii码是知道的 48 - 57,无论你输入什么,只要不是这个范围内的,都屏蔽掉不就ok了吗?管你用的什么输入法呢?
      

  12.   

    我想楼主的问题应该是怎么禁用textbox的中文输入法。
    <script language="javascript">
    function disable(){
     document.myform.text1.style.imeMode="disabled";
    }
    </script>
      

  13.   

    复制粘贴可以在keydown或者keyup时解决吧。