Help com javascript

Senhores, tenho um campo “telefone” em minha página, o qual está “mascarado”.
O único problema que tenho é que permite a pessoa colocar dígitos alfanuméricos!

Alguém poderia me ajudar a “manter” a máscara e deixar digitar apenas números??

<input name="telefone" type="text" class="formulario" id="telefone" size="14" maxlength="13" onkeypress="AplicaMascara('(##)####-####', this)" onblur="question()"/>

Desde já agradeço.

E ai cara blz, pode postar o evento que vc gera essa máscara? Só pra gente ter uma idéia?

Vlw e abraço

Segue o .js

function AplicaMascara(Mascara, elemento){
   // Seta o elemento
   var elemento = (elemento) ? elemento : document.getElementById(elemento);
   
   if(!elemento)
      return false;

   // Método que busca um determinado caractere ou string dentro de uma Array
   function in_array( oque, onde ){
      for(var i = 0 ; i <onde.length; i++){
         if(oque == onde[i]){
            return true;
         }
      }
      return false;
   }

   // Informa o array com todos os caracteres que podem ser considerados caracteres de mascara
   var SpecialChars = [':', '-', '.', '(',')', '/', ',', '_'];
   var oValue = elemento.value;
   var novo_valor = '';

   for( i = 0 ; i ><oValue.length; i++){
      //Recebe o caractere de mascara atual
      var nowMask = Mascara.charAt(i);
      //Recebe o caractere do campo atual
      var nowLetter = oValue.charAt(i);
      //Aplica a masca
      if(in_array(nowMask, SpecialChars) == true && nowLetter != nowMask){
         novo_valor +=  nowMask + '' + nowLetter;
      } else {
         novo_valor += nowLetter;
      }
      // Remove regras duplicadas
      var DuplicatedMasks = nowMask+''+nowMask;
      while (novo_valor.indexOf(DuplicatedMasks)>= 0) {
         novo_valor = novo_valor.replace(DuplicatedMasks, nowMask);
      }
   }
   // Retorna o valor do elemento com seu novo valor
   elemento.value = novo_valor;
}

Para isso eu uso Expressões Regulares

Somente Numeros<br />
<input type="text" name="numeros" onkeydown="mascara(this,soNumeros)" maxlength="5"/><br />
Telefone<br />
<input type="text" name="telefone" onkeydown="mascara(this,telefone)" maxlength="14"/><br />
Cep<br />
<input type="text" name="cep" onkeydown="mascara(this,cep)" maxlength="9"/><br />
Cpf<br />
<input type="text" name="cpf" onkeydown="mascara(this,cpf)" maxlength="14"/>
<script type="text/javascript">
function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function telefone(v){
    v=v.replace(/\D/g,"")
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2")
    v=v.replace(/(\d{4})(\d)/,"$1-$2")
    return v
}

function cpf(v){
    v=v.replace(/\D/g,"")
    v=v.replace(/(\d{3})(\d)/,"$1.$2")
    v=v.replace(/(\d{3})(\d)/,"$1.$2")
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2")
    return v
}

function cep(v){
    v=v.replace(/\D/g,"")
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") 
    return v
}

</script>