Visualizzazione dei risultati da 1 a 4 su 4

Discussione: domandina onsubmit()

  1. #1
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336

    domandina onsubmit()

    Spulciando nel forum ho letto che l'evento onsubmit() non viene richiamato quando il submit viene effettuato da script, ma solo se è l'utente a inviare il form.... la mia domanda è: è una regola fissa, standard o solo il comportamento di alcuni browser? Avrei giusto bisogno di settare il valore di un campo hidden prima dell'invio del form da parte dell'utente: avevo messo l'istruzione sull'onclick del bottone ma ho visto che su IE non funziona quando si preme invio da un campo del form (diversamente che da firefox). La mia soluzione sarebbe spostare l'istruzione sull'onsubmit ma ci sono altri script che richiamano nomeForm.submit() e non devono settare il parametro.... è una soluzione che può funzionare?

  2. #2
    Onsubmit() è un gestore di evento supportato solo dall'oggetto form. Se vuoi settare un campo hidden del form prima dell'invio, ti basta codificare il form in questo modo:

    codice:
    <form id="modulo" method="post" onsubmit="Imposta();">
    ...Campi del form...
    <input type="hidden" id="nascosto" value="">
    <input type="submit" value="Invia">
    </form>
    
    Codice della funzione JavaScript:
    
    function Imposta() {
    document.getElementById("nascosto").value = VALORE DA SETTARE;
    }
    Alcune precisazioni. Ho usato una funzione perché così puoi "tenere pulito" il codice HTML e allo stesso tempo puoi "complicare" il sistema di settaggio del valore dell'hidden con istruzioni if...else, ecc. (nell'esempio lo setta fisso).
    Ho usato il metodo di accesso all'oggetto hidden stabilito dal DOM standard W3C (document.getElementById()). In questo modo, previa associazione dell'attributo id al tuo campo hidden, puoi evitare di "passare" per l'oggetto form come con la "vecchia" sintassi:

    codice:
    document.NOMEFORM.NOMECAMPO.value
    Infine, due parole sul gestore di evento onsubmit(). Questo gestore, come ho detto prima, è specifico dell'oggetto form e non ha senso se inserito in pulsanti, campi di testo, ecc.
    Inoltre, il codice indicato per l'onsubmit() viene eseguito un attimo prima che si verifichi il submit del form.
    In altre parole, quando un utente clicca sul pulsante submit, prima viene eseguita la funzione indicata da onsubmit(), e poi viene spedito il form.

  3. #3
    Aggiungo solo che onsubmit() si verifica al submit del form, indipendentemente da come viene eseguito questo submit (non importa se tramite il clic sul pulsante submit o la pressione su Invio)...quindi funziona sempre nel modo corretto. O meglio, dovrebbe funzionare sempre nel modo corretto...se poi IE ci mette di suo è un'altra cosa...

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367

    Re: domandina onsubmit()

    Originariamente inviato da dannie
    La mia soluzione sarebbe spostare l'istruzione sull'onsubmit ma ci sono altri script che richiamano nomeForm.submit() e non devono settare il parametro.... è una soluzione che può funzionare?
    secondo me sì
    il submit eseguito tramite codice non fa scattare l'evento onsubmit... non conosco browser che si comportano in maniera diversa

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.