Hola:
La tabulación en una expresión regular se escribe normalmente como
\t, pero en este caso
String.fromCharCode() para la tabulación no te va a devolver una cadena que coincida con la expresión regular
\t (por lo menos en firefox, su valor para tecla es
0, y escape(String.fromCharCode(0)) da un hexadecimal cero
%00 ).
Así que basta con dejar pasar el cero, tal y como dejamos pasar el 8:
Código PHP:
<input type="text" id="caja" />
<input type="text" />
<script type="text/javascript">
<!--
// document.getElementById abreviado
function $(x) { return document.getElementById(x); }
function letras1(evt) {
var tecla = (document.all) ? event.keyCode : evt.which;
if ( (tecla==8) || (tecla==0) ) return true;
var patron =/[A-Z ÁÀÉÈÍÌÓÒÚÙ´`ÑÇ]/i;
var te = String.fromCharCode(tecla);
return patron.test(te);
}
$("caja").onkeypress = letras1;
// -->
</script>
Para el botón suprimir no he encontrado problemas tampoco, y para IE tampoco. Por cierto, te he mejorado la validación de la variable
tecla a su forma más correcta. También te faltaban muchos
var (aunque no se si el código estaba embebido en uno más grande, pero sería más comodo que
patron fuese global). A
patron también le he dado cambios para que sea
case insensitive, más cómodo.
Por último comentar el código entre <script> y </script> y olvidarnos del atributo
language
Un saludo y espero que así te funcione bien