I need to validate the form inside a table and change the class of a td-element when the value is not set. I don't have a button inside a form and I can't use the jQuery validate script.
I have written this code but is there a way to do this in a simpler way?
I have written many pages with code like this.
<script>
function richiesti() {
var dati=0;
var cognome=document.clienti.cognome.value;
if ( cognome != '' ){ dati++; } else { document.clienti.cognome.focus(); }
var nome=document.clienti.nome.value;
if ( nome != '' ){ dati++; } else { document.clienti.nome.focus(); }
var codfisc=document.clienti.codfisc.value;
if ( codfisc != '' ){ dati++; } else { document.clienti.codfisc.focus(); }
if ( dati == 3 ){
// Se i tre valori richiesti sono inseriti controllo il codice fiscale
// Definisco un pattern per il confronto
var pattern = /^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$/;
// creo una variabile per richiamare con facilità il nostro campo di input
var CodiceFiscale = document.getElementById("codfisc");
// utilizzo il metodo search per verificare che il valore inserito nel campo
// di input rispetti la stringa di verifica (pattern)
if (CodiceFiscale.value.search(pattern) == -1)
{
// In caso di errore stampo un avviso e pulisco il campo...
alert("Il valore inserito non è un codice fiscale!");
CodiceFiscale.value = "";
CodiceFiscale.focus();
}
else { document.clienti.submit() ; }
}
else { alert('Cognome, Nome e Codice fiscale sono campi obbligatori.');
if ( cognome == '' && nome == '' && codfisc == '' ){
// Cambio la classe del td al valore mancante
document.getElementById('tdcognome').className="tdorange c_white b";
// Imposto la classe degli altri td nel caso sia stata cambiata
document.getElementById('tdcodfisc').className="tdocra c_white b";
document.getElementById('tdnome').className="tdocra c_white b";
document.getElementById('cognome').value="richiesto";
document.clienti.cognome.focus(); }
if ( cognome == '' && nome != '' && codfisc != '' ){
document.getElementById('tdcognome').className="tdorange c_white b";
document.getElementById('tdcodfisc').className="tdocra c_white b";
document.getElementById('tdnome').className="tdocra c_white b";
document.getElementById('cognome').value="richiesto";
document.clienti.cognome.focus(); }
if ( cognome == '' && nome == '' && codfisc != '' ){
document.getElementById('tdcognome').className="tdorange c_white b";
document.getElementById('tdcodfisc').className="tdocra c_white b";
document.getElementById('tdnome').className="tdocra c_white b";
document.getElementById('cognome').value="richiesto";
document.clienti.cognome.focus(); }
if ( cognome == '' && nome != '' && codfisc == '' ){
document.getElementById('tdcognome').className="tdorange c_white b";
document.getElementById('tdcodfisc').className="tdocra c_white b";
document.getElementById('tdnome').className="tdocra c_white b";
document.getElementById('cognome').value="richiesto";
document.clienti.cognome.focus(); }
if ( cognome != '' && nome == '' && codfisc != '' ){
document.getElementById('tdcognome').className="tdocra c_white b";
document.getElementById('tdcodfisc').className="tdocra c_white b";
document.getElementById('tdnome').className="tdorange c_white b";
document.getElementById('nome').value="richiesto";
document.clienti.nome.focus(); }
if ( cognome != '' && nome == '' && codfisc == '' ){
document.getElementById('tdcognome').className="tdocra c_white b";
document.getElementById('tdcodfisc').className="tdocra c_white b";
document.getElementById('tdnome').className="tdorange c_white b";
document.getElementById('nome').value="richiesto";
document.clienti.nome.focus(); }
if ( cognome != '' && nome != '' && codfisc == '' ){
document.getElementById('tdcognome').className="tdocra c_white b";
document.getElementById('tdnome').className="tdocra c_white b";
document.getElementById('tdcodfisc').className="tdorange c_white b";
document.getElementById('codfisc').value="richiesto";
document.clienti.codfisc.focus(); }
}
}
</script>
<HTML>
<form name="clienti" id="clienti" method="POST" action="<?php echo $editFormAction; ?>">
<table class="half" >
<tr>
<td id="tdcognome" class="tdocra c_white b">Cognome :</td>
<td><input name="cognome" id="cognome" type="text" class=" text-sx" value="" required></td>
<td id="tdnome" class="tdocra c_white b">Nome :</td>
<td><input name="nome" id="nome" type="text" class="text-sx" value="" required></td>
<td id="tdcodfisc" class="tdocra c_white b">Codice Fiscale :</td>
<td><input name="codfisc" id="codfisc" type="text" class="text-sx" value="" required></td>
</tr>
<tr>
<td colspan="6"><a class="btn-orange" onClick="richiesti();" href="#">memorizza dati</a></td>
</tr>
</table>
</form>
</HTML>
After the suggestions i make many modify at original code.
REVIEW CODE :
<script>
function richiesti() { //open function richiesti
var dati=0;
var cognome=document.clienti.cognome;
var nome=document.clienti.nome;
var codfisc=document.clienti.codfisc;
[cognome, nome, codfisc].forEach(function (field) { // open function field
if (field.value != ''){ // open if value
dati++;
} // close if value
else { // open else value
field.focus();
} // close else value
}); // close function field
if ( dati == 3 ){ // open if dati
var pattern = /^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$/;
var codiceFiscale = document.getElementById("codfisc");
if (codiceFiscale.value.search(pattern) == -1) { // open if codiceFiscale
alert("Il valore inserito non è un codice fiscale!");
codiceFiscale.value = "";
codiceFiscale.focus();
} // close if codiceFiscale
else { // open else codiceFiscale
document.clienti.submit() ;
} // close else codiceFiscale
} // close if dati
else { // open else dati
alert('Cognome, Nome e Codice fiscale sono campi obbligatori.');
if (cognome.value == '') { // open if cognome
document.getElementById('tdcognome').className = "tdorange c_white b";
document.getElementById('tdcodfisc').className = "tdocra c_white b";
document.getElementById('tdnome' ).className = "tdocra c_white b";
document.getElementById('cognome').value = "richiesto";
cognome.focus();
} // close if cognome
else { // open else cognome
document.getElementById('tdcognome').className="tdocra c_white b";
if (nome.value == '') { // open if nome
document.getElementById('tdcodfisc').className = "tdocra c_white b";
document.getElementById('tdnome' ).className = "tdorange c_white b";
document.getElementById('nome').value = "richiesto";
nome.focus();
} // close if nome
else { // open else nome
if (codfisc.value == '' ) { // open if codfisc
document.getElementById('tdnome' ).className = "tdocra c_white b";
document.getElementById('tdcodfisc').className = "tdorange c_white b";
document.getElementById('codfisc').value = "richiesto";
codfisc.focus();
} // close if codfisc
} // close else nome
} // close else cognome
} // close else dati
} // close function richiesti
</script>