Chronoforms, recupero nome form

navajo75

Utente Attivo
16 Mar 2012
103
1
18
Buongiorno a tutti,

con Joomla 2.5, sto tentando di rifare un sito che sviluppai 3 anni fa.
In esso c'è un form di registrazione utente abbastanza complesso ed attraverso Chronofroms 4 lo vorrei replicare.
La logica mi ha portato a pensare che fosse sufficiente caricare i Javascript che mi permettevano di avere alcune fuzionalità e con delle piccole modifiche ottenere lo stesso risultato.
In effetti ha funzionato con la disabilitazione di alcune chekcbox, ma non riesco a replicare le select dinamiche.
Ho quattro select (nazione, regione, provincia e comune) e tranne la prima, le altre si popolano a seconda della scelta fatta.
Se la nazionalità non è italiana, automaticamente le altre tre select si disabilitano.
Ho una funzione Javascript che mi permette di ottenere ciò:

Codice:
function disab(nazione) {
        switch(nazione) {
      case"Afghanistan":
            document.getElementById('ChronoContact_form_registrazione').regione.disabled=true; 
            document.getElementById('ChronoContact_form_registrazione').capoluogo.disabled=true;
            document.getElementById('ChronoContact_form_registrazione').comune.disabled=true;
            break;
}}

Poi nell'HTML, la richamo nella seguente maniera:

Codice:
<select size="1" class="" title="" name="nazione" onchange="disab(this[this.selectedIndex].value)">

Dove sto sbagliando?
Grazie in anticipo a tutti coloro che vorranno aiutarmi.

Saluti,
Marco
 
In questo modo mi stai dicendo che hai 3 elementi nel DOM con lo stesso id e questo non è possibile.
ChronoContact_form_registrazione

Con getElementById devi selezionare ogni select e non l'intero form.
Prova e fammi sapere.
 
Codice:
function disab(nazione) {
        switch(nazione) {
      case"Afghanistan":
	        document.getElementById('regione').disabled=true; 
            document.getElementById('capoluogo').disabled=true;
            document.getElementById('comune').disabled=true;
            break;
		}}

Intendi così?
Ho provato, ma non funziona.

Saluti,
Marco
 
Sicuro che quei campo di input hanno come ID 'regione', 'capoluogo' e 'comune'?
 
Assolutamente certo.
Con Joomla e Chronoforms sto rifacendo un form di registrazione di un sito da me pubblicato 3 anni fa. Lì tutto funziona.
Se vuoi e pensi possa aiutare la discussione, posso postare il link al form di registrazione del mio sito.

Saluti,
Marco
 
Il problema è proprio questo.
Su quel sito funziona tutto e quel form di registrazione lo voglio replicare in Joomla, usando Chronoforms.
E' qui che non riesco.
 
Guarda ho fatto questa semplice prova per vedere se funziona e va, prova a vedere cosa c'è di diverso nel tuo codice facendo attenzione alla differenza tra ID e NAME:
HTML:
<!DOCTYPE html>
<html>
<body>
<script>
function disab(nazione) {
        switch(nazione) {
            case"ciao":
	    document.getElementById('regione').disabled=true; 
            document.getElementById('capoluogo').disabled=true;
            document.getElementById('comune').disabled=true;
            break;
        }
}
</script>

<select size="1" class="" title="" id="nazione" onchange="disab(this.value)">
<option> ciao </option>
<option> asd </option>
<option> sdf</option>
</select>

<select size="1" class="" title="" id="regione">
<option> regione </option>
<option> asd </option>
<option> sdf</option>
</select>

<select size="1" class="" title="" id="capoluogo">
<option> capoluogo </option>
<option> asd </option>
<option> sdf</option>
</select>

<select size="1" class="" title="" id="comune">
<option> comune</option>
<option> asd </option>
<option> sdf</option>
</select>
</body>
</html>
 
Ciao,

innanzitutto grazie per la risposta, ma si comporta alla stessa maniera del codice che ho già io.
Cioè... se metto il codice che mi hai dato tu in una pagina HTML, con Mozilla, quando scelgo la option ciao nella select nazione, le altre tre si disabilitano.
Se creo con Chronoforms lo stesso identico form e poi aggiungo la funzione javascript nell'evento on load, smette di funzionare.

Perchè?

Saluti,
Marco
 
Ti ringrazio tanto dell'aiuto e non è certamente una cosa dovuta, ma permettimi di farti una domanda...
... conosci Chronoforms?
Questo componente ha un evento che si chiama On Load e che da quindi la possibilità di settare al suo interno un JS. Quindi, quando si carica la pagina che l'utente richiama da browser, è come se al suo interno ci fosse la funzione Javascript.
E' chiaro poi che quella funzione, internamente all'HTML, la richiami all'onchange.
Io devo uscire da questo problema, altrimenti non posso andare avanti con il form di registrazione.
Apprezzo veramente il tuo tentativo di aiutare, anche perchè sei stato l'unico, ma ti prego di suggerire qualcosa, solo se conosci realmente Chronoforms ed il suo funzionamento.

Grazie mille.
Buona domenica,
Marco
 
Finalmente ho capito l'arcano.
Nella select nazione, sull'evento onChange, io chiamo tre funzioni javascript

Codice:
<select size="1" class="" title="" name="nazione" onChange="scrivi_codice_nazione();disab(this[this.selectedIndex].value);set_nazione()" id="nazione">

sul sito che ho pubblicato va tranquillamente, mentre su Joomla con Chronoforms, funziona solo chiamando una funzione. Ad esempio, se voglio disabilitare le select reione, capoluogo e comune, nel caso in cui si scelga una nazione diversa dall'Italia, dovrò utilizzare il segunete JS

Codice:
function disab(nazione) {
        switch(nazione) {
            case"Afghanistan":
	    document.getElementById('regione').disabled=true; 
            document.getElementById('capoluogo').disabled=true;
            document.getElementById('comune').disabled=true;
            break;
        }
}

e richiamare in la suddetta funzione nell'HTML, alla seguente maniera:

Codice:
<select size="1" class="" title="" name="nazione" onChange="disab(this[this.selectedIndex].value)" id="nazione">

Il problema è che io ho bisogno di utilizzare anche le altre due funzioni: 1) scrivi_codice_nazione(); e 2) set_nazione();

Qualcuno sa come far funzionare la chiamata a tre funzioni nell'onChange di una select ed utilizzando Joomla e Chronoforms?

Grazie.
Saluti,
Marco
 
Intendi onchange="disab(); altra();altra()" ?
Se intendi così, ho giá provato; funziona disab, ma non le altre due. Funziona sempre solo la prima che metti.

Saluti,
Marco
 

Discussioni simili