Errore: cannot call methods on dialog prior to initialization; attempted to call method 'open'

  • Creatore Discussione Creatore Discussione ans66
  • Data di inizio Data di inizio

ans66

Utente Attivo
27 Ago 2011
158
0
16
Ciao a tutti!

Da due differenti file lancio uno dopo l'altro due diversi dialog con input text. Ho dovuto modificare i nomi delle variabili per renderle diverse le une dalle altre per evitare alcuni errori ma ora continuo ad avere l'errore " cannot call methods on dialog prior to initialization; attempted to call method 'open' " (Debugger IE con F12) senza riuscire a capire da cosa sia dovuto.

primo file PHP:

Codice:
<!DOCTYPE html>
<html>
  <head>
 

  <title>Tabella Soggetti</title>

 
  <!-- jQuery UI CSS File -->
<link href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.min.css" rel="stylesheet" type="text/css" />
<!-- jQuery Reference -->
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<!-- jQuery UI Reference -->
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.min.js"></script>
<script src="sogg.js"></script>
  </head>
  <body>

// qui c'è tutta la tabella

<div id="indiv"style="visibility: hidden">
<div id="dialogInputs" title="Parola da cercare" value="">
<input type="text" id="parola" name="parola" value="" /><button id="btnInput" type="button">OK?</button>
</div>
</div>
 
  </body>
</html>

Primo file JS parte relativa al Dialog
Codice:
// Cerca record
$("#twelve").click(function(){

var ris;
$(".dodici").css('background-image', "url(images/cerca2.png)");
$(".dodici").css("cursor","default");
var opt = ["<option value='0'>Scegli</option>"];
opt.push("<option value='Soggetti'>Soggetti</option>");


PopupCenter("Soggetto","Soggetto" );
$('#dialogInputs').dialog('open');

});

function PopupCenter(InTitolo, InTesto )
{

$("indiv").show();
$('#dialogInputs').dialog({
        height: 200,
        width: 350,
        position: {
                    my: "center",
                    at: "center",
                    of: $("body"),
                    within: $("body")
            },
        autoOpen: false, 
        modal: true,
        title: InTitolo+" da cercare",
        open: function () {
        var testo =InTesto+': <input type="text" style="z-index:10000"name="names" value="">';
        $(this).html(testo); },
        buttons: [{
        id:"btnInput",
        text:"OK",
        click:function(){ var names = $('input[name="names"]').val();
                          TrovaSog(names); names=""; $(this).dialog("close"); }
                  }]
    }); //end confirm dialog

}

function TrovaSog(nm) {
var ris=nm.trim();
DatiDB();
LoadXMLFind("FindLikeSogg",server, user, passw, ris.toUpperCase());
}

secondo file PHP:
<div class="tabelle" align="center" >
Codice:
<!DOCTYPE html>
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <meta charset="utf-8">
  <title>Tabella Categorie</title>
    
    <!-- jQuery UI CSS File -->
<link href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.min.css" rel="stylesheet" type="text/css" />
<!-- jQuery Reference -->
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<!-- jQuery UI Reference -->
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.min.js"></script>
 
  <script src="categ.js"></script>
  </head>
  <body> 

// qui c'è tutta la tabella

<div id="indiv"style="visibility: hidden">
<div id="dialogInputc" title="Parola da cercare" value="">
<input type="text" id="parola" name="parola" value="" /><button id="btnInput" type="button">OK?</button>
</div>
</div>
 
  </body>
</html>

Secondo file JS parte relativa al Dialog
Codice:
$("#twelve").click(function(){

$(".dodici").css('background-image', "url(images/cerca2.png)");
$(".dodici").css("cursor","default");
var opt = ["<option value='0'>Scegli</option>"];
opt.push("<option value='Categorie'>Categorie</option>");

PopupCenterC("Categoria","Categoria" );
$('#dialogInputc').dialog('open');
});

function PopupCenterC(InTitolo, InTesto )
{

$("indiv").show();

$('#dialogInputc').dialog({
        height: 200,
        width: 350,
        position: {
                    my: "center",
                    at: "center",
                    of: $("body"),
                    within: $("body")
            },
        autoOpen: false, 
        modal: true,
        title: InTitolo+" da cercare",
        open: function () {
        var testo =InTesto+': <input type="text" style="z-index:10000"name="namec" value="">';
        $(this).html(testo); },
        buttons: [{
        id:"btnInput",
        text:"OK",
        click:function(){ var namec = $('input[name="namec"]').val();
                          TrovaCat(namec); namec=""; $(this).dialog("close"); }
                  }]
    }); //end confirm dialog

}

function TrovaCat(nm) {
var ris=nm.trim();
DatiDB();
LoadXMLFind("FindLikeCat",server, user, passw, ris.toUpperCase());
}

L'errore si verifica quando apro la Dialog in TabellaSog e poi TabellaCat e/o viceversa.

Grazie per l'aiuto



 
Ciao Antonio, ti confesso che non ho modificato il tuo js se non per la parte "click" che ho gestito in modo simile,
mi sembra di aver rispettato la tua logica e non ho nessun errore con ie11
il codice di "index2" (secondo file)
PHP:
html :

<div id='twelve' onclick='myFunction()' style="cursor:pointer; background-color:blue; width:100px; height:100px;"></div>
<br /> <br />

<div class="tabelle" align="center"> </div>

<div id="indiv"style="visibility: hidden">

js :

alert ('ci sono !');

$("#twelve").click(function()
{
    alert ('click twelve !');

    myFunction();
});

function myFunction()
{
    alert ('myFunction !');

    $(".dodici").css('background-image', "url(images/cerca2.png)");
    $(".dodici").css("cursor","default");
    var opt = ["<option value='0'>Scegli</option>"];
    opt.push("<option value='Categorie'>Categorie</option>");

    PopupCenterC("Categoria","Categoria" );
    $('#dialogInputc').dialog('open');
}
Cattura_1.PNG
Cattura_2.PNG
può essere che non ho capito
ciao
Marino
 
Ciao Marino,

Grazie per la tua risposta. Si tratta di un errore che non riesco a comprendere e che si verifica dopo un pò di volte che apro una dialog PopUp nella tabella Soggetti e poi in quella Categoria. Mi sono accorto dell'errore perchè non avevo alcuna risposta al click se non il cambiamento dell'immagine del pulsante (immagine attiva / non attiva). Poi con IE 10 F12 ho il seguente errore:

Immagine dell'errore:



Per motivi di spazio ho inserito solo i due file PHP senza tabella e le parti dei file js relativi alle Dialog. Non se l'errore è da ricercare in altri parti.

Nel caso lo ritieni necessario ti posso mandare i file php e js per intero.

Grazie tante.

N.B. Stavo pensando che forse ci vorrebbe un setTimeout prima del click visto che la ricerca e l'aggiornamento della tabella richiedono del tempo e questo potrebbe influire negativamente sulla Dialog
 

Allegati

  • errore.png
    errore.png
    188,1 KB · Visite: 737
Ultima modifica:
si è probabile sia necessario un timeout, perché smette di funzionare dopo alcune attività concluse in modo positivo,
prova, se poi non concludi, posso fare delle prove, la mail la conosci
 
Ciao Marino,

Ho provato con un SetTimeout (anche lungo) ma non ho risolto:

Codice:
// Cerca record
setTimeout(
$("#twelve").click(function(){

var ris;
$(".dodici").css('background-image', "url(images/cerca2.png)");
$(".dodici").css("cursor","default");
var opt = ["<option value='0'>Scegli</option>"];
opt.push("<option value='Soggetti'>Soggetti</option>");


PopupCenter("Soggetto","Soggetto" );
$('#dialogInputs').dialog('open');

}), 1000 );

purtroppo ho perso il tuo email quando un pò di tempo fa il mio computer ha tirato le cuoia e non avevo backupato la posta
 

Discussioni simili