Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    44

    elementi creati allo scroll

    Salve a tutti; ho il seguente problema che non riesco a capire a cosa sia dovuto:

    La pagina creata contiene una decina di elementi Div, ognuno con alcuni input field; se scrivo in un campo input e premo invio viene scritto il contenuto del campo input su db.

    Gli elementi Div vengono creati uno ad uno allo scroll dell'utente della pagina a parte quelli che servono per avere un contenuto iniziale da consentire lo scroll (generalmente un paio di elementi div) che vengono creati al caricamento della pagina.

    Ho infine una funzione jquery che che all'invio scrive il messaggio su db con chiamata ajax.

    Il problema è che mentre tutto funziona correttamente per i primi elementi creati al caricamento della pagina(scrivo messaggio nel campo input e premo invio, tutto ok); per gli elementi creati successivamente(quelli creati allo scroll della pagina) non viene riconosciuto il keypress da jquery--nella pagina c'è tutto ma se scrivo il commento nel campo non succede nulla- sembra che l'ultima funzione non venga chiamata!

    Di seguito il codice :

    codice:
    $(document).ready(function() { // fill dom untill scrollBar appears
        while ( $('#bodyWrapper').hasnotVerticalScrollBar()){
            fillDom_with_next_element();
        }
    });
    codice:
    $(document).ready(function(){ //create next element when scroll
        $(window).scroll(function() {   
            if($(window).scrollTop() + $(window).height() == $(document).height()) {
              fillDom_with_next_element();
           }
        });
    });
    codice:
    function fillDom_with_next_element(){
       //crea una struttura come questa:
    // <div>
    //<input type=text id=commento/>
    //</div> 
    }
    codice:
    $(document).ready (function print_results_others_events() { //write comment when enter is pressed
    
        $("[id=comment]").keypress(function(event) {
              var $self = $(this);      
              var comm = $self.val();
              var keycode = (event.keycode ? event.keycode : event.which);
              if (keycode == 13) {
              //ajax call + write db
              }
        });
    })

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    codice:
    $(document).ready (function print_results_others_events() { //write comment when enter is pressed
    
        $("body").on('keypress','input [id=comment]',function(event) {
              var $self = $(this);      
              var comm = $self.val();
              var keycode = (event.keycode ? event.keycode : event.which);
              if (keycode == 13) {
              //ajax call + write db
              }
        });
    })
    se usi jquery 1.7 o superiore .on altrimenti .live attenzione ricordati che gli id devono essere univoci ti consiglio d'usare una classe al posto di [id=comment] e di rendere id appunto unici cronologici tipo comment1, comment2, comment3....
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.