Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    Evento che non si scatena da onlick su elemento generato

    In pratica ho generato un modulo dinamicamente, in uno dei suoi elementi vi è un suggeritore che tramite una chiamata ajax ritorna un elenco di comuni, premendo il link del comune richiesto dovrebbe inserire il nome di questo nel campo del form.
    Complicato? sì no dipende! Il problema è un altro, non riesco a gestire l'evento associato all'ancora che porta il nome del comune.
    Dall'immagine allegata si vede meglio ciò che intendo:

    Purtroppo la paginetta è su un'intranet e quindi non posso farla vedere ma vi metto lo spezzone di codice che genera quel che vedete:
    codice:
    function inserisciValore(comune, id) {
        var el = document.getElementById('suggeritore' + id);
        document.getElementById('comune' + id).value = comune;
        cancellaNodi(el);
        el.style.display = 'none';
        suggeritoreOpen = false;    //    sposta a false la possibilità di inseguire il suggeritore che è stato chiuso
    };
    
    .....
    for (var i = 0, n = ret.length; i < n; i++) {    //    Crea la lista con i nodi
          ancora += '<li><a href="javascript:inserisciValore(\'' + ret[i].Com + ', ' + id + '\');" id="a' + i + '">' + ret[i].Com + '</a></li>';
      }
      ul.innerHTML = ancora;
    
    .....
    Il codice di cui sopra genera questo codice:
    codice HTML:
    <td>  <input id="comune1" class="capital" type="text" onblur="if (suggeritoreOpen) { document.getElementById('suggeritore1').style.display = 'none';}" onkeydown="focalizza(event, this.id);" onkeyup="if (this.value.length >= 3) creaLista(this.value, 1);" tabindex="2" value="" name="comune[]">
     <div id="suggeritore1" class="suggerimenti ombraBordo" style="display: none;">
    <!-- da qui codice generato via AJAX -->
      <ul>
        <li>
          <a id="a0" href="javascript:inserisciValore('Moggio Udinese', 1);">Moggio Udinese</a>
        </li>
        <li>
          <a id="a1" href="javascript:inserisciValore('Pavia di Udine', 1);">Pavia di Udine</a>
        </li>
        <li>
          <a id="a2" href="javascript:inserisciValore('Trivignano Udinese', 1);">Trivignano Udinese</a>
        </li>
        <li>
          <a id="a3" href="javascript:inserisciValore('Udine', 1);">Udine</a>
        </li>
      </ul>
    </div>
    </td>
    Per richiamare inserisci valore ho provato a: inserire nel codice onclick="", il dodice prima di utilizzare il costrutti innerHTML creava il link da DOM e usavo ancora.onclick = function() { codice } ma anche ho provato a usare ancora.setAttribute('onclick', ' codice '); oppure provando a registrare un evento onclick con addEventListener() ma niente di niente!
    Quando faccio click sul nome del comune che mi interessa la funzione inserisciValore() non viene affatto richiamata.
    Il peggio è che firebug non mi da un solo errore che uno!
    Non so che pesci prendere, qualcuno mi sa dare una mano?
    Immagini allegate Immagini allegate

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ti dico il problema.
    L'elemento input ha un evento onblur col quale fai "nascondere" il tuo suggeritore.
    Quando il suggeritore è aperto e tu vai a cliccare sopra una qualsivoglia ancora, non stai facendo altro che far scatenare l'evento onblur dell'input. Ovviamente questo evento aviene prima che l'ancora riesca ad intercettare il click (perché il suggeritore non c'è più).

    Per risolvere devi rivedere un po' la logica di funzionamento. Magari prova a spostare il blur sull'elemento padre (il td che contiene sia input che suggeritore) in modo che non sia scatenato fintanto che si manovra all'interno di tale elemento.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Sì questo ha una sua logica, sto pensando di eliminarlo e di far chiudere il tutto dopo il click sull'ancora.

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    sto pensando di eliminarlo e di far chiudere il tutto dopo il click sull'ancora.
    Chiaro, ma avresti il problema del suggeritore che non si chiude se esci dall'input senza cliccare su una delle ancore suggerite.
    Invece applicare onblur sul td, non ti convince?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Sì mi convince anche, devo fare delle prove e la tua può essere un'idea, devo anche vedere se funziona su IE8, qui gira ancora WinXP

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.