[GDRCD 5.4.1] Problema chiudere una specifica finestra modale
10/07/2017 21:37:47
e allora mi sa che in entrambe le soluzioni non viene trovato l'elemento della dialog.
Hai provato ad eseguire le istruzioni a mano nella console?
Inizia vedendo cosa ti tira fuori la selezione con $(), se ti tira fuori l'elemento giusto prova a chiamare la dialog() o hide()
16/07/2017 14:28:13 e modificato da bennu99 il 16/07/2017 14:32:44
leoblacksoul ha scritto: e allora mi sa che in entrambe le soluzioni non viene trovato l'elemento della dialog.
Hai provato ad eseguire le istruzioni a mano nella console?
Inizia vedendo cosa ti tira fuori la selezione con $(), se ti tira fuori l'elemento giusto prova a chiamare la dialog() o hide()
Ho provato pure questo, trovato in una precedente discussione sul portare:
function modalWindowCloseall() {
$('[id^=dialog-]').dialog('close');
}
Ovviamente il risultato è lo stesso: non fa nulla.
Scusa l'ignoranza leo, quindi dici di scrivere da console le istruzioni invece d'usare quelli presenti nel footer?
Come faccio, poi, a vedere quello che tira fuori la selezione con $()?
16/07/2017 14:50:42
Come ti ha già detto leo, se non succede nulla significa che non trova l'elemento.
Do per scontato che jquery sia attivo e che gli ID siano corretti.
oltre ai test di black, se non ti portano a nulla, prova anche così
$('#elemento').click(function() {
$('#id_modal').css('display', 'none!important');
});
in alternativa
$('#elemento').click(function() {
$('#id_elemento_padre').find('#id_elemento_figlio').hide();
});
lo so, sono due metodi che gelano il sangue, ma non conoscendo la sintassi della tua pagina, butto tutti i tentativi.
Una domanda, il fatto che non funzioni e non ti dia nessun errore, mi fa pensare che potresti aver dichiarato lo stesso ID due volte.
16/07/2017 15:54:18
bennu99 ha scritto:
Ovviamente il risultato è lo stesso: non fa nulla.
Scusa l'ignoranza leo, quindi dici di scrivere da console le istruzioni invece d'usare quelli presenti nel footer?
Come faccio, poi, a vedere quello che tira fuori la selezione con $()?
A maggior ragione, se tre soluzioni diverse non ti funzionano il problema deve essere a monte.
No io non sto dicendo di sostituire il codice. Ti sto solo facendo capire come si può fare un po' di debug veloce su javascript:
quello che devi fare è banalmente provare a scrivere sulla console del browser (con la pagina della land aperta ovviamente) parti del codice che non ti funziona.
Se nella console provi a scrivere $('#dialog-scheda_iscr') (mentre le dialog è aperta) la console ti fa vedere il suo valore di ritorno. Cosa esce?
Ti ritorna un oggetto vuoto o trova l'elemento della dialog correttamente?
Se ti ritorna correttamente l'elemento, prova a scrivere $('#dialog-scheda_iscr').dialog("close") e vedi se ti chiude la dialog.
Se lo fa allora il codice è corretto...ma magari la callback non viene chiamata.
Raysmoke...i miei occhi piangono per quel codice xD
16/07/2017 20:30:42 e modificato da bennu99 il 16/07/2017 20:31:49
leoblacksoul ha scritto: [quote]bennu99 ha scritto:
Ovviamente il risultato è lo stesso: non fa nulla.
Scusa l'ignoranza leo, quindi dici di scrivere da console le istruzioni invece d'usare quelli presenti nel footer?
Come faccio, poi, a vedere quello che tira fuori la selezione con $()?
A maggior ragione, se tre soluzioni diverse non ti funzionano il problema deve essere a monte.
No io non sto dicendo di sostituire il codice. Ti sto solo facendo capire come si può fare un po' di debug veloce su javascript:
quello che devi fare è banalmente provare a scrivere sulla console del browser (con la pagina della land aperta ovviamente) parti del codice che non ti funziona.
Se nella console provi a scrivere $('#dialog-scheda_iscr') (mentre le dialog è aperta) la console ti fa vedere il suo valore di ritorno. Cosa esce?
Ti ritorna un oggetto vuoto o trova l'elemento della dialog correttamente?
Se ti ritorna correttamente l'elemento, prova a scrivere $('#dialog-scheda_iscr').dialog("close") e vedi se ti chiude la dialog.
Se lo fa allora il codice è corretto...ma magari la callback non viene chiamata.
Raysmoke...i miei occhi piangono per quel codice xD[/quote]
Ho fatto come mi hai detto:

nell'immagine, tranne il primo errore che credo sia uno dei tanti del gdr, c'è il risultato della chiamata della funzione e la finestra modale all'invocazione da console della stessa funzione viene chiusa correttamente.
Quindi è un problema di callback?😶
17/07/2017 18:59:13
Direi di si
Un codice funzionante dovrebbe essere questo:
<button class="dialog-closer">x</button>
<script type="application/javascript">
jQuery(function(){
jQuery('.dialog-closer').click(function(ev){
ev.preventDefault();
jQuery('#dialog-scheda_iscr').dialog('close');
});
});
</script>
Sempre meglio effettuare il bind degli eventi tramite javascript piuttosto che usare gli attributi html
05/08/2017 11:54:38 e modificato da bennu99 il 09/08/2017 12:34:45
Chiedo scusa per il ritardo alla risposta.
Ho provato ad inserire quel codice, ho messo un breakpoint sulla riga jQuery('#dialog-scheda_iscr').dialog('close') ed eseguito in debug. Come in un'altra prova, per curiosità, che ho fatto, dove ho creato una semplice pagina html con un tasto dentro per aprire la modale, e il contenuto della modale è un altro tasto per chiuderla. In entrambi i casi si entra nella funzione, si ferma nel breakpoint solo che non la chiude...quindi boh.
leoblacksoul ha scritto: Direi di si
Un codice funzionante dovrebbe essere questo:
<button class="dialog-closer">x</button>
<script type="application/javascript">
jQuery(function(){
jQuery('.dialog-closer').click(function(ev){
ev.preventDefault();
jQuery('#dialog-scheda_iscr').dialog('close');
});
});
</script>
Sempre meglio effettuare il bind degli eventi tramite javascript piuttosto che usare gli attributi html
09/08/2017 12:35:32
raysmoke ha scritto: Come ti ha già detto leo, se non succede nulla significa che non trova l'elemento.
Do per scontato che jquery sia attivo e che gli ID siano corretti.
oltre ai test di black, se non ti portano a nulla, prova anche così
$('#elemento').click(function() {
$('#id_modal').css('display', 'none!important');
});
in alternativa
$('#elemento').click(function() {
$('#id_elemento_padre').find('#id_elemento_figlio').hide();
});
lo so, sono due metodi che gelano il sangue, ma non conoscendo la sintassi della tua pagina, butto tutti i tentativi.
Una domanda, il fatto che non funzioni e non ti dia nessun errore, mi fa pensare che potresti aver dichiarato lo stesso ID due volte.
Ho provato pure così ma ho lo stesso risultato, non chiude la finestra modale. :(
09/08/2017 14:06:01
bennu99 ha scritto:
nell'immagine, tranne il primo errore che credo sia uno dei tanti del gdr, c'è il risultato della chiamata della funzione e la finestra modale all'invocazione da console della stessa funzione viene chiusa correttamente.
A questo punto, perdona il dubbio, ma dove lo stai scrivendo il js ?
@leo : lo so che sono soluzioni agghiaccianti, ma non ha neanche senso dare suggerimenti più elaborati di difficile comprensione. Quando aiuto cerco sempre di offrire qualcosa che possano capire, in modo tale che un domani ce l'abbiano già in testa e possano rimaneggiarlo in autonomia. :p
09/08/2017 15:11:40 e modificato da kanade tachibana il 09/08/2017 15:11:56
<div class="container">
<div class="color" id="modal_1">
<button class="close" id="1">test</button>
</div>
<div class="color" id="modal_2">
<button class="close" id="2">test</button>
</div>
</div>
$('.close').on('click', function(){
var id = $(this).attr('id');
$('#modal_'+id+'').hide();
});
.color {
width: 200px;
height: 200px;
background-color: black;
}
Discussione seguita da
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Hero Wars ↗
Project Entropy ↗
AlterEgo ↗
RAID Shadow Legends ↗
CRSED: F.O.A.D. ↗
Cafuné ↗
World of the Sea Battle ↗
State of Survival ↗