Allora, aggiornamento: il mio amico Kanta che ne sa parecchio più di me suggerisce che:

...quando usi queste funzioni:

function makeBox() {
var a = " Che regali? <input type = 'text' name='dettagliregali' id='dettagliregali' size='42' maxlength='75' onChange='javascript:this.value=this.value.toUpper Case();' onkeypress='return handleEnter(dettagliregali, event);' value=''><div id='tnote'>Es. Ad esempio, ovetti, frittatine, preparati per sughi pronti - Per aggiungere altri dettagli usa le Note sotto</div>"
if (document.getElementById("regali").value=="si") {
document.getElementById("inputBox").innerHTML = a;
var dettagliregali= new LiveValidation('dettagliregali',{ validMessage: "ok" });
dettagliregali.add(Validate.Presence, { failureMessage: "Da compilare" });
dettagliregali.add(Validate.Length, { maximum: 70} );
}
else {
document.getElementById("inputBox").innerHTML = "";
}
}


Dove tu, nel caso uno risponda SI proponi un nuovo campo da compilare quando vai a fare il controllo ti stai avvalendo di questo

var dettagliregali= new LiveValidation('dettagliregali',{ validMessage: "ok" });

Ma questo oggetto che crei con NEW non è il validatore di tutta la form , ovvero tu hai generato un validator solo per quel campo e ovviamente nel momento in cui tu premi no lui mette ok e da come return che tutta la form è validata!

La soluzione sta nel portare tutti i campi nel validatore principale e non crearne dei nuovi!
Pero' anche gli altri campi sono validati tramite var nome_id= new LiveValidation('nome_id',{ecc... quindi non capisco perché gli altri sono giustamente richiesti mentre quello nestato nell'inner.html riesca a scavallare tutto... Kanta, sono io che non ho capito? Aiuto!

Panamon Rn+