Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481

    inettare javascript con innerHTML

    Ho realizzato un semplice form dal quale è possibile replicare n. volte un gruppo di campi <input> sfruttando innerHTML. Il problema nasce dal fatto che il campo che rappresenta una data è legato ad una chiamata jquery per creare una maschera su di esso, il codice del campo dato è questo:

    codice:
    <script type="text/javascript">
    jQuery(function($){$("#id_campo_data").mask("99/99/9999",{placeholder:"gg/mm/aaaa"});});
    </script>
    il problema è che innerHTML mi include una copia di questo codice (ovviamente cambiando l'id del campo replicato, ma il browser ignora completamente questa seconda chiamata a jquery. E' come se la chiamata jQuery innestata da innerHTML sia ignorata, c'è un modo per aggirare il problema e forzare che questo codice sia eseguito e questo nuovo oggetto istanziato?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Crea una classe (tipo data) e associ la chiamata jquery
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da cavicchiandrea
    Crea una classe (tipo data) e associ la chiamata jquery
    Scusa l'ignoranza, sono un novellino di js, puoi essere più specifico? So cos'ê una classe, ma non ho idea di come collegare le due cose in relazione ad una possibile soluzione...

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    posta il codice dove usi l' innerHTML

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da james
    Scusa l'ignoranza, sono un novellino di js, puoi essere più specifico? So cos'ê una classe, ma non ho idea di come collegare le due cose in relazione ad una possibile soluzione...
    codice:
    <script type="text/javascript">
    jQuery(function($){$(".tuaclassecampodata").mask("99/99/9999",{placeholder:"gg/mm/aaaa"});});
    </script>
    cosi assocerai il "mask" a tutti i campi che avranno la classe "tuaclassecampodata" (credo)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da cavicchiandrea
    codice:
    <script type="text/javascript">
    jQuery(function($){$(".tuaclassecampodata").mask("99/99/9999",{placeholder:"gg/mm/aaaa"});});
    </script>
    cosi assocerai il "mask" a tutti i campi che avranno la classe "tuaclassecampodata" (credo)
    Che idiota! Appena torno provo, dovevo pensare che il # poteva essere un selettore di id...è poteva essere sostituto dal . Un selettore di classe...mi stavo scervellando per usare eval...

  7. #7
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da cavicchiandrea
    codice:
    <script type="text/javascript">
    jQuery(function($){$(".tuaclassecampodata").mask("99/99/9999",{placeholder:"gg/mm/aaaa"});});
    </script>
    cosi assocerai il "mask" a tutti i campi che avranno la classe "tuaclassecampodata" (credo)
    no, purtroppo non funziona, funziona anche per classe ma sempre e solo con i campi già presenti nella pagina e non con quelli innestati tramite innerHTML

  8. #8
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da Vindav
    posta il codice dove usi l' innerHTML
    questo è il blocco js nell'head della pagina:

    Codice PHP:
    <script type="text/javascript" src="./js/jquery.js"></script>
    <script type="text/javascript" src="./js/jquery.maskedinput-co.min.js"></script>
    <script>
    var k = 0;
    function addFld()
    {
        k++;
        var new_div = document.createElement('div');
        new_div_id = 'div_'+k;
        new_div.setAttribute( 'id', new_div_id );
        
        document.getElementById('destination').appendChild(new_div);
        document.getElementById(new_div_id).innerHTML = k+' <input type="text" class="data_nascita">';
    }
    </script> 
    e questo è quello che sta nel body

    Codice PHP:
    campo originale: <input type="text" class="data_nascita" name="data_nascita">

    [
    url="#"]AGGIUNGI CAMPO[/url]


    <
    div id="destination"></div>

    <
    script type="text/javascript">jQuery(function($){$(".data_nascita").mask("99/99/9999",{placeholder:"gg/mm/aaaa"});});</script> 

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    posta il codice dove usi l' innerHTML
    non avevo dubbi che non funzionasse, visto che i campi vengono aggiunti successivamente al caricamento della pagina.

    E' come se la chiamata jQuery innestata da innerHTML
    come già detto posta il codice dove effettui l'innerHTML(a parte che non dovresti proprio usare l'innerHTML, visto che stai utilizzando jquery sfrutta tutti i metodi che ti mette a disposizione). Non devi innestare nulla, con l'istruzione innerHTML devi solamente ricreare i nuovi campi.

  10. #10
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da Vindav
    non avevo dubbi che non funzionasse, visto che i campi vengono aggiunti successivamente al caricamento della pagina.



    come già detto posta il codice dove effettui l'innerHTML(a parte che non dovresti proprio usare l'innerHTML, visto che stai utilizzando jquery sfrutta tutti i metodi che ti mette a disposizione). Non devi innestare nulla, con l'istruzione innerHTML devi solamente ricreare i nuovi campi.
    Ho postato il codice sopra, appena prima la tua risposta. Non conosco bene js, tantomeno jquery che infatti uso solo per il mask. Cmq con il codice postato creo i nuovi campi con la classe corretta, ma sempre che la chiamata a jquery è precedente e non include i nuovi campi. Non c'è un modo per "reinizializzare" jquery dopo la innerHTML?!

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.