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

    [Javascript] Eventi in line o nel file JS

    Salve a tutti,
    sto cercando una soluzione a questo problema che sia elegante e che mi aiuti a separare il più possibile logica da presentazione, quindi, per favore, tenete conto di ciò nelle risposte.

    Il problema è il seguente.

    Ho un form con una serie di campi e voglio dotarlo di due funzionalità:

    1. un sistema di highlight che evidenzi il campo corrente
    2. un sistema di controllo dell'input in Ajax.

    Ovviamente il codice relativo al punto 1 sarà uguale per tutto il mio sito, mentre quello relativo al punto 2 cambierà da forma form (anche all'interno della stessa pagina).

    Per il momento

    Ho creato un file highlight_form.js che una volta inserito nella pagina automaticamente trova i campi del form e li rende evidenziabili e de-evidenziabili.

    objFormElement.onblur = function(){
    deHighlightFormField(this);
    }

    In ogni tag input, inoltre esiste il gestore di eventi onlbur che mi richiama la funzione del form specifica per quella pagina.

    <input type='text' name='txtAdminUsername' id='regUsername' onBlur='storeAdminAccount(this)' value='<?=$strDefaultUsername?>' />

    A questo punto i due gestori di eventi si sovrascrivono e perdo una delle funzioni.
    Come posso fare per evitare ciò?

    Grazie a chi mi risponderà
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  2. #2

  3. #3
    In realtà non fa esattamente al caso mio. Lo uso già nel file js ma non mi consente di generalizzare la cosa. Nel senso che non posso creare un file unico che inserito nel head della pagina dà ai form entrambe le funzionalità. Volevo capire se ciò fosse possibile o no!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Nel senso che non posso creare un file unico che inserito nel head della pagina dà ai form entrambe le funzionalità
    a me pare di si, non capisco, fa proprio quello che ti serve, non va a sovrascrivere i listener già associati all'elemento target, quindi avrai entrambe le funzionalità.

    Se provi questo esempio:

    codice:
    <input type="text" id="prova" onfocus="alert('prova')"/>
    <script>
    document.getElementById("prova").addEventListener("focus", function(){alert('prova2')}, false);
    </script>
    Al focus dovresti vedere entrambi gli alert, non è quello che chiedi?

  5. #5
    Ok mi sono documentato un po' e hai ragione. C'è solo un problema!
    Per l'evento load di window non riesco a mettere due addEventlistener sebbene la documentazione dica che si possa fare in pratica mi funziona soltanto l'ultimo. Ho modificato lo script in modo tale che tramite qualcosa del genere


    if (window.addEventListener){
    window.addEventListener('load',validateFormFieldsM anager,false);
    }else{
    window.attachEvent('onload',validateFormFieldsMana ger);
    }

    mi basta fare l'import del file nella HEAD e ho tutte le funzioni caricate.

    La realtà è che il listener viene sempre sovrascritto e funziona solo l'ultimo.
    Sai in cosa sbaglio per caso?
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

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.