sì avevo già chiaro required e pattern ma non conoscevo la chiamata setCustomValidity() che è quella che mi serviva per invalidare il campo.

ho fatto una prova velocissima ora ma così funziona:

Codice PHP:
<input type="text" id="testo" value="" onfocus="setCustomValidity('errore')" /> 
mentre così non funziona (con jQuery):

Codice PHP:
$(document).ready(function() {
   $( 
"#testo" ).setCustomValidity('errore');
}); 
Forse devo richiamare la funzione in altro modo?