Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Non funziona classe di una funzione esterna

    Buona sera ho questa situazione:
    codice:
    $(".calendarioC").on("change",function(){
    ...
                   if ( $selected == 'ok' )
                    {
    ...
                    } else {
                        $(".div_2").html(label_orari(9,19,2,30));
    
    dove label_orari è questa funzione
    codice:
            function label_orari(oraPrima, oraUltima,tipoConsegna,costoConsegna) {
                var txt_label = "";
                var c = 1;
                for(var o = oraPrima; o <= oraUltima; o++) {
                    txt_label += '<label>
    <input type="radio" class="checkk" name="input_dettaglio_'+tipoConsegna+'" 
    value="'+o+':00">'+o+':00</label>';
                    c++;
                }
                return txt_label;
            }
    
    nel div con classe "div_2" si visualizzano correttamente i campi input ma, cliccando sulle rispettive label, non viene attivato il click.

    codice:
        $(".checkk").click(function(event) {
            if ($(this).is(':checked')) {
                $('input[name=inputTime]').val($(this).val());
            } else {
            }
        });
    
    Cosa sbaglio?
    ---------------------------
    danielix05

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,503
    codice:
    $(".checkk").click(function(event){
            if($(this).is(':checked')){
                $('input[name=inputTime]').val($(this).val());
            }else{
            }
        });
    se questo lo metti prima che compaia la roba nel div ovvio che non funziona.

    prova ad usare questa sintassi

    codice:
    $(document).on("click","#start-element",function() {
        $(this).attr("id", "test-element");
    });
    Ultima modifica di ciro78; 07-11-2023 a 22:59
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,660
    Ciao, è un comune errore che si commette nella gestione degli eventi per elementi creati runtime.
    In sostanza stai definendo la gestione dell'evento click quando ancora l'elemento non è stato creato, per cui il listener non viene applicato affatto perché l'elemento non esiste in quel punto nel momento in cui quello script viene eseguito.

    Si risolve generalmente con la tecnica detta "delegazione dell'evento" (event delegation), discussa diverse volte anche sul forum.

    Con jQuery è applicabile in modo abbastanza semplice usando il metodo on(). Puoi consultare la documentazione dove trovi anche degli esempi di utilizzo:
    https://api.jquery.com/on/#direct-and-delegated-events

    Per approfondire l'argomento puoi fare qualche semplice ricerca con i termini menzionati.
    Fai sapere.


    [EDIT]
    @ciro sono arrivato tardi
    Ultima modifica di KillerWorm; 07-11-2023 a 23:01
    Prova Forum HTML.it Toolset per una fruizione ottimale del Forum

    In arrivo Forum HTML.it Toolset v1.3.0 con nuove funzionalità

  4. #4
    Grazie Ciro78 e KillerWorm per la vostra cortese indicazione.
    La funzione $(".checkk")
    l'avevo messa alla fine di tutte le altre. Avevo immaginato che fosse qualcosa legato alla sequenzialità ora ne so una in più

    Grazie ancora.
    ---------------------------
    danielix05

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 © 2024 vBulletin Solutions, Inc. All rights reserved.