Ci sono vari problemi in quel codice.
Anzitutto un'incongruenza: usi l'evento onblur (che scatta togliendo il focus al campo), e poi vai a testare l'ultimo tasto premuto.
Comunque i keyCode usali solo se strettamente necessario: sono interpretati inmodo diverso nei vari browser.
Altro problema: un campo input senza form: in qualche browser non funziona.
Vedi queste modifiche (nota anche la sintassi):
codice:
<body>
<form action="#">
<input type="text" name="telefono" onblur="soloNum(this);" />
<input type="text" name="pippo" />
</form>
</body>
che deve corrispondere al JS (da inserire nella head)
function soloNum(cc) {
if(cc.value.match(/^\+*\d+$/) ) {
return true;
} else {
alert("solo numeri - eventualmente preceduti da +");
cc.value = "";
return false;
}
}
Se vuoi permettere gli spazi nel numero, la RegExp diventa:
/^\+*[\d ]+$/