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

    evitare doppio inserimento con doppio click su SUBMIT

    per ora ho risolto così:
    <input type='submit' value='Salva' onclick='submit();javascript:this.disabled=true;'>

    ... e sembrerebbe funzionare. il problema è (SOLO) che se ho un controllo nel form legato ad onSubmit cliccando salva il controllo non viene rispettato, io vorrei solo che una volta clikkato si disabilitasse!
    qualcuno conosce qualche altro metodo di controllo lato CLIENT?

    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Il doppio inserimento avviene perche` tu gli dai il comando due volte (una con JS nell'evento ed una da HTML).

    La sintassi corretta e`:
    <input type='submit' value='Salva' />

    La sintassi corretta per il tag <form> in caso di controllo:
    <form name="..." ... onsubmit="return controlla(this);">

    dove controlla deve rispondere false in caso non si voglia inviare il form e true se e` tutto ok.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3

    ho capito ma..

    il submit() nel tag input non l'ho messo a caso, perchè se scrivo soltanto <input name='salva' type='submit' value='Salva' onclick='javascript:this.disabled=true;'>

    col caxxo che mi invia il form, e nemmeno mi fa il controllo, è come se lo disabilitasse prima di creare l'handle(si dice così?) dell'evento submit().
    in poche parole è un circolo vizioso.
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  4. #4

    forse ho risolto così:

    mettendo

    form.salva.disabled=true;
    return true;

    all'interno del controllo stesso del form, in modo tale che quando restituisce true disabilita il bottone, l'unica cosa che spero è che javascript sia abbastanza veloce ad eseguire il controllo altrimenti avrei il tempo necessario per cliccare una seconda volta.
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Infatti non ha senso: l'evento onclick scatta prima dell'esecuzione del comando HTML collegato.

    Non devi disabilitare l'invio.

    Il solo fatto di inviare il form deve disabilitare la pagina. Se non lo fa e` un errore del browser (o di qualche script che non gira correttamente).

    Diverso e` se il form ha un target diverso dalla pagina stessa, nel cuicaso occorre verificare meglio tutta la situazione.

    In alternativa potresti evitare del tutto l'invio del form tramite HTML, e lasciare il compito al JS: in tal caso devi usare un <input type="button"> e scrivere una variabile quando il form sta per essere spedito.

    Tieni pero` presente che questo va contro le norme sull'accessibiita` dei siti Web, ed e` quindi da evitare.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    il target è la pagina stessa.
    comunque potresti dirmi se la soluzione che ho adottato può essere l'ideale? in pratica all'interno del controllo, nei punti in cui c'è

    return true;

    gli ho affincato un bel

    form.salva.disabled=true;

    a me sembra una buona soluzione, mi sento quasi entusiasta.... :metallica :quipy: :metallica
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non e` che mi piaccia molto.

    Il funzionamento dipende dalle velocita` relative del JS e dell'HTML.

    Supponi che il disabled scatti prima che il JS ritorni true: la pagina non partira`.
    E su questo non puoi fare dei test, perche` le combinazioni di browser e hardware sono quasi infinite.

    Piuttosto:

    All'inizio metti una variabile JS:
    var form_abil = true;

    Poi ogni volta che faresti un return true:

    if(form_abil) {form_abil=false; return true;}
    else {return false;}

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    grazie, era prorpio la soluzione ai miei problemi!
    ciao
    massimiliano
    :metallica
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

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.