15 messaggi dal 14 luglio 2010
Ho una pagina asp.net che fa uso di funzioni javascript su eventi vari.
Se volessi spostare il codice javascript dall'interno della pagina ad un file esterno, come dovrei richiamare le varie funzioni sui diversi eventi?

Ora nell'evento Page Load assegno al click di un checbox le function ValidatorsEnabled e panelLoading così:
checbox1.Attributes.Add("onclick","ValidatorsEnabled(this.checked); panelLoading();");
sposti semplicemente le funzioni (es. ValidatorsEnabled) all'interno del file javascript e includi il file nel tuo aspx nell'head.

Ormai programmano tutti... ma la professionalità appartiene a pochi
15 messaggi dal 14 luglio 2010
Buongiorno e grazie per la risposta.
Ho inserito nell'head '<script type="text/javascript" src="js/iscrizione.js" ></script>' e lasciato il richiamo alle funzioni esattamente come quando la parte javascript era all'interno del file aspx.
Cioe':
checbox1.Attributes.Add("onclick","ValidatorsEnabled(this.checked); panelLoading();");
Al variare dello stato della checkbox1 scatta solo la prima delle due funzioni assegnate. Ho dimenticato qualcosa? Devo forse registrare lo script? Grazie
No, è sufficiente. Non funziona?
Ti conviene a questo punto lavorare a posteriori sulla pagina web generata per vedere:
1. che il file js sia incluso correttamente (compreso il percorso che magari potrebbe dare problemi in caso di url rewriting/routing)
2. che le funzioni siano esatte (da firefox>visualizza sorgente generato)
3. il browser segnala errori javascript?

Ormai programmano tutti... ma la professionalità appartiene a pochi
15 messaggi dal 14 luglio 2010
sembra essere tutto a posto per quanto riguarda l'inclusione. La funzione panelLoading (l'unica che non funziona) e' questa:

function panelLoading()
{
  var checkbox = document.getElementById( '<%=checkbox1.ClientID%>' );
  var panel = document.getElementById( '<%= Panel1.ClientID %>' );
  if ( checkbox.checked ) { panel.style.display = 'block' }
  else { panel.style.display = 'none' };
  return;
}

Vedi qualche errore?

sul render della pagina leggo:
<body onload="panelLoading();">

<span class="checkbox"><input id="wizard1_checkbox1" type="checkbox" name="wizard1$checkbox1" onclick="ValidatorsEnabled(this.checked); panelLoading();" /></span>


La funzione scatta infatti in due occasioni:
- al load del form rende non visibile il panel1
- diventa visibile se la checkbox è spuntata e torna ad essere non visibile se non è spuntata.
Due cose mi spiazzano:
1. portato il js all'interno, tutto funziona a meraviglia
2. la prima delle due funzioni... funziona NON E' VERO, NON FUNZIONA NULLA...
Boh!

Modificato da Barbara il 03 settembre 2012 10.59 -
Modificato da Barbara il 03 settembre 2012 11.08 -
'<%=checkbox1.ClientID%>' e simili devono diventare parametri della funzione panelLoading()
quindi il tuo codice diventa
function panelLoading(idCheck)
{
var checkbox = document.getElementById(idCheck);
...


per effettuare dei test prova a svuotare le tue funzioni e sostituirle con alert('nomefunzione'); giusto per vedere se vengono richiamate :)

function panelLoading()
{
alert('panelLoading');
}

PS - ti consiglio fortemente di dare un'occhiata a jquery che ti semplifica la vita nella gestione del javascript
Modificato da manuel0081 il 03 settembre 2012 12.18 -

Ormai programmano tutti... ma la professionalità appartiene a pochi
15 messaggi dal 14 luglio 2010
Ho provato con l'alert: scatta al caricamento pagina ma non al cambio dello stato della checkbox. Come dicevi tu, devo passare la checkbox e il panel come parametri della funzione. Come avrai intuito, e' la prima volta che tento di scrivere una function  , brancolo nel buio ed ho il timore di incartarmi proprio su passaggio e richiamo parametri.
Per quanto riguarda jquery... volevo prima far penitenza senza
ho provato su internetexplorer il tuo codice in una pagina vuota e funziona al check del checkbox (ho provato con gli alert).
Prova a ripostare un po' di codice dopo le correzioni.

Preciso che non sono un esperto javascript
Modificato da manuel0081 il 03 settembre 2012 12.58 -

Ormai programmano tutti... ma la professionalità appartiene a pochi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.