<DIV align="center">
    <P>输入年龄:
      <INPUT name="text1" numonly="1" type="text"  onblur="checkNum(this);"/>
      </P>
    <P>输入学号:
      <INPUT type="text" numonly="1"  name="textfield" onblur="checkNum(this);"/>
    </P>
  </DIV>
<SCRIPT language="javascript">
function  checkNum(obj)
{
  var flag=test(obj.value);
  if(flag==false)
    {
//obj.focus();
  if(document.activeElement.numonly !="1")
  {
  obj.select();
   }
}
}
function test(str)
{
var re=/^(\d)+$/;
if(str.match(re)==null)
{
alert("你输入的内容包含非法字符!");
return false;
}
else 
{
return true;
}
}
</SCRIPT>
------说错了莫怪。

解决方案 »

  1.   

    抢焦点死循环问题
    ----------
    方法1:
    保证所有的默认值(defaultvalue以及用js赋的值)都是合法的(当然,空输入也是合法的)方法2:
    如果是ie,可以改成如下:
    <input name="text1" type="text"  onbeforedeactivate=" return checkNum(this);"/>
    <script language="javascript">
    function  checkNum(obj)
    {
      var flag=test(obj.value);
      if(flag==false)
        {
    obj.focus();
    obj.select();
    }
    return flag; //加上这一句
    }
    </script>
      

  2.   

    <input name="text1" type="text" onbeforedeactivate="return checkNum(this);" /> //向JK_10000(JK)学习。var checkNum = function(obj){
        if(! obj.value.isNumber()){
            obj.select();
            alert('please input the number.'+obj.value);
        }
        return obj.value.isNumber();
    }
    String.prototype.isNumber = function(){
        return !(this.match(/^(\d)+$/) == null);
    };