Eseguire funz. Javascript caricata tramite la funzione Ajax di JQuery in onChange

ironmaiden189

Nuovo Utente
1 Set 2011
2
0
0
Ciao a tutti ragazzi, mi sono iscritto per cercare soluzione ad un problema che ho da qualche giorno, sono nuovo nello sviluppo web e magari può essere una stupidaggine..
Ho una lista drop down con due valori insieme ad altri elementi in un form. Ciò che vorrei fare è attivare quattro componenti del form se l'utente seleziona il primo valore della lista e disattivarli altrimenti.

Nell'applicazione web c'è una pagina principale, e l'utente naviga nel sito aprendo e chiudendo tab dinamicamente con chiamate ajax tramite la libreria JQuery, che rimuovono la pagina corrente e caricano la nuova pagina in un div specifico.
In queste pagine caricate con Ajax ho bisogno di metterci i javascript che verranno utilizzati in quelle pagine, per esempio in questo caso il javascript che attiva/disattiva i componenti, ma non riesco a chiamarlo perchè mi esce l'errore "**Uncaught ReferenceError: soggettiNaturaChangeEvent is not defined**", dove soggettiNaturaChangeEvent è il nome della funzione javascript.

Questo è il punto dove viene chiamata, nella pagina newEditSoggetti.jsp:

HTML:
<form:select id="soggetti_soggettiNatura" path="soggettiNatura" cssStyle="width:300px;" onChange="javascript:soggettiNaturaChangeEvent();">
    ...
    ...
    ...

In quella pagina c'è anche la funzione javascript:

HTML:
   <script id="function1" type="text/javascript">
        alert("soggettiNaturaChangeEvent");
        function soggettiNaturaChangeEvent()
        {
            alert("function soggettiNaturaChangeEvent");
            var natura = document.getElementById('soggetti_soggettiNatura'); 
            var datanascita = document.getElementById('soggetti_soggettiDataNascita');
            var luogonascita = document.getElementById('soggetti_soggettiLuogoNascita');
            var sesso1 = document.getElementById('soggettiSessoID1');
            var sesso2 = document.getElementById('soggettiSessoID2');
            if(natura.value == "Persona fisica")
            {
    		datanascita.disabled=false;
    		luogonascita.disabled=false;
    		sesso1.disabled=false;
    		sesso2.disabled=false;
    	}
    	else
    	{
    		datanascita.disabled=true;
    		luogonascita.disabled=true;
    		sesso1.disabled=true;
    		sesso2.disabled=true;
    	}
    }
    </script>

Qui invece c'è la funzione di refresh dei tab in una libreria di funzioni javascript separata, che chiama uno script di inizializzazione specificato tra i parametri:

Codice:
//reset variabili, riordina tabs, etc...
    $.ajax(action,
    {
    success : function(result)
    {
        //cerca il div dove mettere il contenuto da caricare
	var doc = document.getElementById(newid);
	doc.innerHTML = doc.innerHTML + result;

        //cerca lo script di inizializzazione "scriptId" e lo esegue (E QUESTO FUNZIONA)
	scripts = $('#' + scriptId); 
	eval(scripts.html());
		
        //qui cerco di trovare tutti i tag <script> i cui id iniziano con "function" e applicare la funzione eval
        var jScripts = $("[id^=function]");
	for(var i = 0; i < jScripts.size(); i++)
	{
           eval(jScripts.html());
	   jScripts = jScripts.next();
	}
    }
    });

La pagina stampa la prima alert quando (credo) appende la funzione al DOM, ma quando clicco sul componente che dovrebbe invocare la funzione javascript ottengo quell'errore.
Ciò che vorrei è far partire questa funzione quando clicco sul componente soggettiNatura, non quando ajax finisce di caricare la pagina.

Una piccola nota: se cerco di caricare la pagina normalmente (senza Ajax) la funzione non crea problemi..
Ho una funzione nella pagina principale che mi mostra il codice html corrente dopo tutte le modifiche effettuate dai vari javascript e ajax (puramente per una questione di debug) e la funzione javascript che sto cercando di far eseguire è presente.

Grazie a tutti quelli che cercheranno di aiutarmi!
Andrea
 

Discussioni simili