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 billy1
    Registrato dal
    Jun 2001
    Messaggi
    549

    come posso disabilitare il tasto invio di un form, appena viene cliccato ?

    ciao

    come posso disabilitare il tasto invio di un form, appena viene cliccato ?

    infatti vorrei che l'utente clicchi solo 1 volta sul tasto invio

    (infatti se l'invio del form richiede qualche secondo, magari l'utente ri-preme il tasto perche' pensa che il form non sia stato inviato...)

    grazie
    Il fumo fa male a te e agli altri.
    Rispettate chi non vuole respirare il fumo passivo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    <input type="button" id="mioTasto" onclick="blockButt();" value="invia">

    function blockButt(){
    document.getElementById('mioTasto').disabled=true;
    document.nomeForm.submit();
    }

  3. #3
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da stiffa
    <input type="button" id="mioTasto" onclick="blockButt();" value="invia">

    function blockButt(){
    document.getElementById('mioTasto').disabled=true;
    document.nomeForm.submit();
    }
    Ho provato il tuo metodo e funziona però il mio form ha dei campi obbligatori e ho notato che se l'utente non ne compila uno e clicca invia il tasto si disabilita.
    Come fare per disabiltarlo solo dopo l'invio?

  4. #4
    O sennò puoi intervenire direttamemte sul'evento onsubmit:
    <input.. onsubmit="verifica()">

    codice js:
    function verifiica() {
    if(campo.value="") {
    alert("Devi compilare il campo");
    return false;
    }
    }

  5. #5
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da Mega69
    O sennò puoi intervenire direttamemte sul'evento onsubmit:
    <input.. onsubmit="verifica()">

    codice js:
    function verifiica() {
    if(campo.value="") {
    alert("Devi compilare il campo");
    return false;
    }
    }
    Ti spiego meglio, i controlli JS e php li ho già, mi serve proprio che non venga permesso il secondo click invia questo in fondo a tutti i controlli cioè quando il form è gia stato inviato correttamente una volta

  6. #6
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Niente da fare

    ho messo cosi, il form parte ma il tasto non si disabilita

    ...tutti i controlli

    function xxx(){
    document.getElementById('bottone1').disabled=true;
    document.getElementById('bottone1').value = "Invia";
    document.mioform1.submit();
    }
    }

    nella home:

    <input type="submit" name="bottone1" id="bottone1" value="Invia" onclick="xxx()" />

  7. #7
    ciao

    Tanto per cominciare fai cosi :

    <input type="submit" value="invia" onclick="this.disabled=true">

    cosi dopo l'invio il tasto è disabilitato.


    Poi ammettiamo che la funzione che controlla i campi si chiami controlloForm() ok?
    bene,visto che prevedi un'azione esplicita di invio del form (cioè tramite pulsante di submit e nno tramite metodo submit() ) allora viene attivato l'evento onsubmit il quale viene intercettato dalla nostra funzione,quindi:

    <form onsubmit="return controlloForm()" ... >

    ovviamente la funzione deve tornare true se tutto va bene. Se tutto va male invece deve effettuare il focus sul campo errato,riabilitare il pulsante di submit (che nel frattempo sarà disabilitato per quanto detto prima) e tornare false.

    La traduzione in codice effettivo dovrebeb essere semplice.

  8. #8
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da unbreakable9
    ciao

    Tanto per cominciare fai cosi :

    <input type="submit" value="invia" onclick="this.disabled=true">

    cosi dopo l'invio il tasto è disabilitato.


    Poi ammettiamo che la funzione che controlla i campi si chiami controlloForm() ok?
    bene,visto che prevedi un'azione esplicita di invio del form (cioè tramite pulsante di submit e nno tramite metodo submit() ) allora viene attivato l'evento onsubmit il quale viene intercettato dalla nostra funzione,quindi:

    <form onsubmit="return controlloForm()" ... >

    ovviamente la funzione deve tornare true se tutto va bene. Se tutto va male invece deve effettuare il focus sul campo errato,riabilitare il pulsante di submit (che nel frattempo sarà disabilitato per quanto detto prima) e tornare false.

    La traduzione in codice effettivo dovrebeb essere semplice.
    Mi sembra di aver fatto come dici ma se clicco su invia senza riempire i campi si disabilita il tasto ma non escono gli alert http://www.photoman.altervista.org/scrivimi1.php

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da Braco
    Mi sembra di aver fatto come dici ma se clicco su invia senza riempire i campi si disabilita il tasto ma non escono gli alert http://www.photoman.altervista.org/scrivimi1.php

    sbaglio o ieri su questa discussione avevi detto che non partiva nemmeno il submit?

    secondo me hai qualche problema nella routine di validazione...
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  10. #10
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da fcaldera
    sbaglio o ieri su questa discussione avevi detto che non partiva nemmeno il submit?

    secondo me hai qualche problema nella routine di validazione...
    C'è solo il tuo codice che non va, voglio farti vedere i controlli magari qualcosa non va però va sempre tutto

    Ora nel form è cosi:

    <input type="submit" name="bottone1" value="Invia" onclick="this.disabled=true" />

    Nel file esterno:

    codice:
    //Chiude automaticamente finestre popup "Scrivimi e Segnala il sito ai tuoi amici"   
    function aprisegnala(){
    var chiudiFinestra=window.close(); 
    } 
    function closePopup(){
    var xxx=window.setTimeout('aprisegnala()',3000); 
    }
    
    function controlla1(){
    var f = document.mioform1;
    //.value == "" rende il campo obbligatorio
    //.charAt(0) == " " non permette la barra spaziatrice come primo carattere
    if(f.nome.value == "" || f.nome.value.charAt(0) == " "){
    f.nome.style.backgroundColor='#e2e2e2'
    alert("Inserire il Nome");
    f.nome.focus();
    return false;
    }
    if((f.nome.value.indexOf("<") != -1) || (f.nome.value.indexOf(">") != -1) || (f.nome.value.indexOf("\\") != -1)){
    alert("I caratteri  <  > \\  non sono ammessi");
    f.nome.focus();
    return false;
    }
    if(f.suoemail.value == "" || f.suoemail.value.charAt(0) == " "){
    f.suoemail.style.backgroundColor='#e2e2e2'
    alert("Inserire l'Email");
    f.suoemail.focus();
    return false;
    }
    //Valida l'Email
    //valida pippo@email.{2,4}//pip.po@email.{2,4}//pip_po@email.{2,4}//pip-po@email.{2,4}
    var reg = new RegExp("^([-_.#$&a-z0-9]+)[@][a-z]+(\\.[a-z]{2,4})(\\.[a-z]{2,4})?$","");
    if (!f.suoemail.value.match(reg)){
    f.suoemail.style.backgroundColor='#e2e2e2'
    alert("Inserire un' Email valida");
    f.suoemail.focus();
    return false;
    }
    if((f.citta.value.indexOf("<") != -1) || (f.citta.value.indexOf(">") != -1) || (f.citta.value.indexOf("\\") != -1)){
    alert("I caratteri  <  >  \\  non sono ammessi");
    f.citta.focus();
    return false; 
    }
    if(f.messaggio.value == "" || f.messaggio.value.charAt(0) == " "){
    f.messaggio.style.backgroundColor='#e2e2e2'
    alert("Inserire il Messaggio");
    f.messaggio.focus();
    return false;
    }
    if((f.messaggio.value.indexOf("<") != -1) || (f.messaggio.value.indexOf(">") != -1) || (f.messaggio.value.indexOf("\\") != -1)){
    alert("I caratteri  <  >  \\  non sono ammessi");
    f.messaggio.focus();
    return false;
    }
    return true;
    }
    //Non lascia spazi vuoti (per Segnala sito e Scrivimi)
    function ignoreSpaces(string){
    var temp = "";
    string = '' + string;
    splitstring = string.split(" ");
    for(i = 0; i < splitstring.length; i++)
    temp += splitstring[i];
    return temp;
    }
    //Caratteri max inseribili
     function conta(val){
    max=500
    if (val.messaggio.value.length > max){
    val.messaggio.value = val.messaggio.value.substring(0,max)
    rest = 0
    } 
    else{
    rest = max - val.messaggio.value.length
    }
    val.num.value = rest
    }
    
    //Script che colora il campo obbligatorio non compilato (per Segnala sito e Scrivimi)
    function highlight(e){
    eventobj=ns6? e.target : event.srcElement
    if (previous!=''){
    if (checkel(previous))
    previous.style.backgroundColor=''
    previous=eventobj
    if (checkel(eventobj))
    eventobj.style.backgroundColor=highlightcolor
    }
    else{
    if (checkel(eventobj))
    eventobj.style.backgroundColor=highlightcolor
    previous=eventobj
    }
     }
    //Quando si digita nel campo giallo dopo l'alert, fa tornare il campo bianco (per Segnala sito e Scrivimi)
    var highlightcolor="white"
    var ns6=document.getElementById&&!document.all
    var previous=''
    var eventobj
    //Regular expression to highlight only form elements
    var intended=/INPUT|TEXTAREA|SELECT|OPTION/
    //Function to check whether element clicked is form element
    function checkel(which){
    if (which.style&&intended.test(which.tagName)){
    if (ns6&&eventobj.nodeType==3)
    eventobj=eventobj.parentNode.parentNode
    return true
    }
    else
    return false
    }

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.