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

    selezionare array di campi partendo da un elemento qualsiasi

    Ho un array di campi contenenti delle date, supponiamo data[0], data[1], data[2] ecc..., ed ognuno di essi chiaramente contiene una data testuale in formato gg-mm-aaaa, io dovrei trovare la data più futura (ammesso che sia scritta in forma corretta chiaramente, altrimenti ignoro il campo) e da quella data calcolare una data successiva di 5 anni. Il problema non è tanto il calcolo +5Anni ma il fatto che il nome dei campi non è predeterminabile, qundi pensavo di creare una chiamata ad una funzione aggiungendo un evento onChange su ciascun campo, ma se passo alla ipotetica funzione il "this" nella realtà non passo l'array di campi ma il campo specifico e poi non so come andare a fare la ricerca negli altri elementi che compongono l'array...C'è un modo per accedere all'array di campi partendo da uno degli elementi sfruttando il this? Il nome dell'array come dicevo non è predeterminabile, quindi non posso scrivere una funzione ad hoc, per questo mi volevo appoggiare al this sperando che si potesse risalire all'array. Il this.parentNode è tutt'altra cosa, non si ragiona in termini di array ma di elementi nel DOM se non sbaglio quindi ho scartato anche questo.
    Codice PHP:
    <input type="text" name="data[0]" value="01-01-2013" onChange="funzioneX(this)">
    <
    input type="text" name="data[1]" value="01-02-2013" onChange="funzioneX(this)">
    <
    input type="text" name="data[2]" value="01-03-2013" onChange="funzioneX(this)">
    <
    input type="text" name="data[3]" value="01-04-2013" onChange="funzioneX(this)">
    <
    script>
    function 
    funzioneX(elementoArray)
    {
    // risalire all'array data partendo da elementoArray
    // analizzare con un for tutti i valori degli elementi dell'array
    // nel ciclo di volta in volta salvo il valore più futuro
    // quando esco dall'array calcolo una data +5 anni dal valore estratto
    }
    </script> 

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Se puoi aggiungere una classe agli elementi e usare jquery (che facilita l'operazione) è una stupidata (ultime parole famose)
    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
    Se puoi aggiungere una classe agli elementi e usare jquery (che facilita l'operazione) è una stupidata (ultime parole famose)
    una classe univoca per quell'array di campi la posso anche creare, ma cosa cambia?? (ecco le ultime parole famose...)

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Se nel documento hai solo quegli elementi tipo input:text nulla se invece (come immagino) ne ai altri molto perché li distingue comunque jquery lo puoi usare?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da cavicchiandrea
    Se nel documento hai solo quegli elementi tipo input:text nulla se invece (come immagino) ne ai altri molto perché li distingue comunque jquery lo puoi usare?
    sì certo, jquery lo posso usare, e cmq sì di campi ne sono molti altri

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Esempio base per recuperare i valori della classedata
    $('.classedata').each(function(index){
    $(this).val()
    })
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da cavicchiandrea
    Esempio base per recuperare i valori della classedata
    $('.classedata').each(function(index){
    $(this).val()
    })
    grazie...semplice...ora cerco come si fa a validare le date e sommare 5 anni alla data più alta. Grazie mille

  8. #8
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da james
    grazie...semplice...ora cerco come si fa a validare le date e sommare 5 anni alla data più alta. Grazie mille
    il codice che usa jquery lo metto dentro una funzione che richiamo da tutti i campi con l'onChange o c'è un altro modo per creare una sorta di listner via jquery su ogni campo con la classe specificata all'evento onChange?

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Dipende "quando" ti serve se ti serve subito (al caricamento) puoi usare ready oppure tramite l'evento che vuoi
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da cavicchiandrea
    Dipende "quando" ti serve se ti serve subito (al caricamento) puoi usare ready oppure tramite l'evento che vuoi
    no la domanda era un altra, per risparmiare codice e non scrivere x volte onChange="nomeFunzione()" mi chiedevo se c'era un modo in jquery per creare una sorta di listner, ma non un listner legato al change di un campo ma di uno qualsiasi dei campi che compongo l'array...

    la funzione l'ho buttata giu e funziona
    Codice PHP:
    function scadenza()
    {
        var 
    last_date = new Date(1970,0,1);
        $(
    '.1234').each(function(index){
            
    cur_date = $(this).val();
            var 
    dmy cur_date.split('/');
            
    cur_date = new Date(
                
    parseInt(dmy[2], 10),
                
    parseInt(dmy[1], 10) - 1,
                
    parseInt(dmy[0], 10)
            );
            if (
    cur_date>last_datelast_date cur_date;
        });
        
    last_date.setDate(last_date.getDate() + (365*5));
        var 
    dd last_date.getDate();
        var 
    mm last_date.getMonth() + 1;
        var 
    yyyy last_date.getFullYear();
        var 
    last_date_formatted dd '/' mm '/' yyyy;
    alert(last_date_formatted);

    unico neo la formattazione della data (mancano gli zeri) e sinceramente non pensavo si dovesse ricorrere allo split per formare le date e formattarle...senza contare poi che per date precedenti al 1970?! Vengo da PHP, JS mi suona così strano...

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.