Controllo form: uno dei 2 campi obbligatorio

  • Creatore Discussione Creatore Discussione Bubbi
  • Data di inizio Data di inizio

Bubbi

Nuovo Utente
21 Set 2006
19
0
0
Ciao a tutti,
sto cercando di inserire nel form un controllo javascript che mi renda obbligatorio uno dei due campi Cod. Fisc. o Partita Iva.
Ho fatto così ma non mi funziona:
<SCRIPT LANGUAGE=\"JavaScript\">
<!--
function checkCheckBox(iscrizione){

if (iscrizione.ragione_sociale.value == '') {
alert('ATTENZIONE: Ragione Sociale obbligatoria!');
iscrizione.ragione_sociale.focus();
return false;
}
....
else if ((iscrizione.codice fiscale.value == '') && (iscrizione.partita_iva.value == '')) {
alert('ATTENZIONE: Codice Fiscale o Partita IVA obbligatorio!');
iscrizione.codice fiscale.focus();
return false;
}
else
return true;
}
// -->
</script>

Questo è il form:
<form name=\"iscrizione\" action=\"index.php?page=inserisci\" method=\"POST\" onsubmit=\"return checkCheckBox(this)\">
Ragione Sociale:
<input type="text" name="ragione_sociale" />
....
Codice Fiscale:
<input type="text" name="codice_fiscale" SIZE="11" MAXLENGTH="11"/>
<br>
Partita IVA:
<input type="text" name="partita_iva" SIZE="16" MAXLENGTH="16" />
<br>
<input name="submit" type="submit" value="Spedisci"><INPUT TYPE="reset" VALUE="Reset">
</form>

Dove sbaglio? :confused:
Aiutoooo :crying:
 
Prova modificando questa riga:
Codice:
else if ((iscrizione.codice fiscale.value == '') && (iscrizione.partita_iva.value == '')) {
Così:
Codice:
else if ((iscrizione.codice_fiscale.value == '') && (iscrizione.partita_iva.value == '')) {
 
Grazie,
effettivamente quello era un errore. Purtroppo lo script non funziona comunque. Per qualche motivo proprio quella parte lì mi invalida il tutto e mi fa passare il controllo.
 
OK! Ho risolto :fonzie:
Era un altro errore di distrazione come quello che mi hai segnalato, in un altro campo.
Grazie mille
 
Ora però, se uno dei due campi è pieno dovrei applicargli il rispettivo controllo del Cod Fisc (function codiceFISCALE) o della Partita IVA (function partitaIVA).
Ho provato a fare così:
....
else if (iscrizione.codice_fiscale.value != ''){
var CFisc=codiceFISCALE(iscrizione.codice_fiscale.value)
if (CFisc==false){
alert('Codice Fiscale errato');
iscrizione.codice_fiscale.focus();
return false;
}
}
....

Ma, manco a dirlo, non funziona...:incazz2:
Qualche idea?
 
Mi esegue correttamente il controllo, ma mi poi mi fa saltare i controlli degli altri campi. :mad:
 
Credo che potresti semplificare la sintassi.
Da:
Codice:
if ((iscrizione.codice_fiscale.value == '') && (iscrizione.partita_iva.value == '')
a:
Codice:
if (!iscrizione.codice_fiscale.value && !iscrizione.partita_iva.value)

Ed analogamente, da:
Codice:
if (iscrizione.codice_fiscale.value != '')
a:
Codice:
if (iscrizione.codice_fiscale.value)

Inoltre nutro il dubbio che usi troppi backslah dove non necessario:

form name=\"iscrizione\" action=\"ind...

Se non hai motivi specifici per usare tutti queli backslash, rimuovili!
 
Sì, in effetti lo script è in una pagina php.
Mah.. la cosa inquietante è che lo script funziona perfettamente fino a quando inserisco il codice fiscale giusto. A quel punto, invece di proseguire con i controlli dei campi seguenti, mi spedisce direttamente i dati.
 
una condizione IF(VALORE) è equiparabile a:

IF((VALORE!="") && (VALORE!=FALSE) && (VALORE!=UNDEFINED))

Cioè ritorna TRUE se e solo se VALORE contiene effettivamente qualcosa, mentre torna FALSE se VALORE non è definito o è una stringa vuota oppure è esplicitamente FALSE.

CIrca la presenza dei backslash, la produzione dinamica di javascript tramite php è alquanto complessa ed il debug dello javascript andrebbe fatto innanzi tutto su quanto PRODOTTO da php anzichè da quanto CONTENUTO nel codice PHP.
Lo script pubblicato da Bubbi non è quindi l'originale php nè il javascript da questo prodotto, ma una edizione ridotta ed editata estraendo solo alcune porzioni dello stesso.

Prova a controllare il JavaScript non nel codice php stesso ma bensì nella pagina da questo prodotto (nel browser, mostra sorgente).
Può darsi che ciò permetta di individuare il problema, che nel php è più difficile da individuare.
 
OK!
Ho risolto in questo modo:
...
else if(!codiceFISCALE(iscrizione.codice_fiscale.value)){
alert('Codice Fiscale errato');
iscrizione.codice_fiscale.focus(); return false;}
...

Grazie mille dell'aiuto! :tifoso:
 
Aggiorno le ultime modifiche.
Per fare in modo che venisse controllato con la relativa funzione solo il campo pieno, ho fatto così:

....
else if(iscrizione.partita_iva.value && !partitaIVA(iscrizione.partita_iva.value)) {
alert('Partita IVA errato');
iscrizione.partita_iva.focus();
return false;
}
else if(iscrizione.codice_fiscale.value && !codiceFISCALE(iscrizione.codice_fiscale.value)){
alert('Codice Fiscale errato');
iscrizione.codice_fiscale.focus();
return false;
}
.....

Spero possa essere di aiuto a qualcun altro.
Ora mi godo il meritato riposo :dormo:
 

Discussioni simili