354 messaggi dal 13 marzo 2013
Ciao a tutti
ho un problema su una TextBox contenuta in una FormView: è possibile associare una funzione che si inneschi al momento della perdita del focus della TextBox?
Ho provato associando una funzione Javascript all'evento onBlur ma, nel caso io cambi modalità del FormView (passando per esempio in ReadOnly e sostituendo la TextBox con una Label), viene generato automaticamente un errore in quanto la TextBox non esiste più,anche se io in quel momento non richiamo la funzione.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

PR17 ha scritto:

è possibile associare una funzione che si inneschi al momento della perdita del focus della TextBox?

Sì, bisogna proprio usare l'onblur come hai fatto tu. Il browser eseguirà la funzione che gli hai associato subito prima di inviare la nuova richiesta al server, quindi è molto strano che la Textbox già non esista più.
Se nella funzione esegui del codice asincrono, allora controlla che la Textbox esista ancora prima di lavorare con le sue proprietà. Passa this alla funzione, così saprà da quale elemento era stata chiamata e potrà controllare se esiste ancora.

Qual è il motivo per cui stai gestendo l'evento blur? Se si tratta solo di evidenziare visivamente la casella che ha il focus, in alternativa puoi usare la pseudoclasse CSS :focus.
input[type=text]:focus { border:2px solid blue; }


ciao,
Moreno

Enjoy learning and just keep making
354 messaggi dal 13 marzo 2013
no, volevo formattare il valore numerico mettendo i "." per separare le migliaia e le "," per la parte decimale.
ma più che non esiste più la pagina non partiva nemmeno e il debugger mi diceva che l'istanza dell'oggetto non era stata trovata..
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
probabilmente c'è un problema di un altro tipo.
L'evento onblur, che si verifica lato client, non può interferire in alcun modo con l'istanza della Textbox lato server, o col comportamento del debugger.
Vedi se nella console del browser appaiono degli errori javascript che potrebbero bloccare l'esecuzione di altri script nella pagina.

Il postback si verifica correttamente?

ciao,
Moreno

Enjoy learning and just keep making
354 messaggi dal 13 marzo 2013
ho fatto dei test:
Il problema non è sull'evento onblur di per se ma sulla funziona associata, precisamente sulla riga di codice in cui recupero i controlli, ad esempio(qua ho copiato una dropdownlist ma è la stessa cosa con la textbox)
            var ddl_professionista = document.getElementById('<%=FormView_insert.FindControl( "DropDownList_prof").ClientID%>');


lanciando l'applicazione in modalità debug il codice si interrompe in questa riga ritornandomi come errore il fatto che l'istanza dell'oggetto non è stata trovata.

In un'altra pagina in cui ho sempre un formview (Ma utilizzato solo in modalità insert) il tutto funziona
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
se il FindControl ti restituisce null vuol dire che il template in cui si trova la DropDownList_prof non è stato istanziato. Questo può succedere quando:
  • il FormView non è stato messo in databinding con un oggetto
  • Il FormView si trova in un'altra modalità: ad esempio è in Edit mentre la DropDownList_prof si trova invece nell'InsertItemTemplate.


Comunque, potresti non aver bisogno di recuperare il ClientID del controllo. Se effettivamente devi solo formattare il valore della casella, puoi anche chiamare la funzione javascript in questo modo:
onblur="javascript:formattaValore(this);"

Passando this alla funzione, gli fornirai un riferimento alla casella stessa e non sarà più necessario usare il suo ID.

Ecco un esempio:
http://jsfiddle.net/Qf86H/

ciao,
Moreno
Modificato da BrightSoul il 16 ottobre 2013 23.02 -

Enjoy learning and just keep making
354 messaggi dal 13 marzo 2013
Ciao il mio caso è proprio il secondo, infatti il FormView parte in modalità ReadOnly, quindi passandogli il this alla funzione risolvo questo problema relativo alle modalità del FormView?
oggi lo provo
Grazie
354 messaggi dal 13 marzo 2013
un' altra domanda se posso: se io devo innescare la funzione Javascript su un'altro controllo nel FormView (ad esempio in base ad un checkbox modifico il TextBox) e non posso usare il this, come posso agire?
grazie

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.