L'editor che uso (PSPad) non riconosce qualcosa contenuta in questa function e ne blocca l'esecuzione.
Prova ad aggiungere il ";" (punto e virgola) prima e dopo l'intera espressione:
codice:
;(function(){
var inp = document.getElementsByClassName('prl');
for(var i=0; i<inp.length; i++){
inp[i].oninput=function(){
this.value = this.value.replace(/[^a-z]/gi,'').toLowerCase();
};
}
})();
Mi consiglieresti un altro editor free in italiano ?
Dai uno sguardo a Brackets.
... basta che funzionino.
Mi pare giusto
è comunque una mediocre filosofia di vita (a mio personalissimo parere). Sicuramente ci si può sempre migliorare... poi, è chiaro, dipende principalmente dal contesto e dalle proprie aspirazioni.
Ad ogni modo vedo che l'inventiva non ti manca, ed è già un buon punto 
nel for hai dichiarato la variabile i=0
...
è obbligatorio dichiararla?
Il discorso sarebbe lunghetto, cerco di sintetizzare:
In JavaScript, normalmente, le variabili sono dichiarate in modo implicito dall'interprete JavaScript quando queste non sono state dichiarate esplicitamente col costrutto var. Tali variabili saranno però dichiarare e "ospitate" automaticamente nel contesto globale (global scope).
In questo caso, in genere, è più probabile incappare in possibili conflitti tra nomi variabile uguali, che sono magari usati nello scope locale (all'interno di una funzione) e in quello globale, andando quindi a creare inevitabilmente dei grattacapi per lo sviluppatore. Inoltre una variabile che mi serve usare solo all'interno di una funzione, non ha motivo di essere "vista" fuori da questa. Nel caso specifico, la variabile i andrà a morire non appena finisce l'esecuzione di quella funzione. Se fosse stata globale sarebbe stata mantenuta in memoria occupando inutilmente risorse (sebbene lo spreco sarebbe stato irrisorio).
Proprio per evitare tali problematiche e per garantire un migliore processo in fase di debug, è stata introdotta la direttiva "use strict", da indicare ad inizio script, con cui (se specificata) sarà obbligatorio dichiarare tutte le variabili in modo esplicito.
In qualunque caso è buona consuetudine, nella programmazione (in generale), dichiarare sempre tutte le variabili, e sarebbe ancora meglio dichiararle tutte all'inizio dello script (o del relativo scope).
Ad esempio, quello stesso script potrebbe essere scritto dichiarando, ad inizio funzione, le variabili usate nella funzione stessa e magari impostare un'unica riga di dichiarazione separando le variabili con l'uso della virgola, in questo modo:
codice:
;(function(){
var i, inp = document.getElementsByClassName('prl');
for(i=0; i<inp.length; i++){
inp[i].oninput=function(){
this.value = this.value.replace(/[^a-z]/gi,'').toLowerCase();
};
}
})();