打DotA的?
/[\D\-]/g
模式都换成这个试试,你的当前模式把非数字都替换成空了.

解决方案 »

  1.   

    onKeyUp="this.value=this.value.replace(/[^\d-]/g,'')" 
      

  2.   

    非数字的都替换了当然不能打出
    <input name="user_phone" type="text" id="user_phone" onKeyUp="this.value=this.value.replace(/[^\d-]/g,'')" size="15" onafterpaste="this.value=this.value.replace(/[^\d-]/g,'')" >
      

  3.   

    - 在[]中除了在字符中间,例如a-z中,其余情况表示普通字符-,不需要转义的吧?
    /[-\D]/g也是可以的吧
      

  4.   

    onKeyUp="this.value=this.value.replace(/[^\d-]/g,'')"