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

    Condizionare submit di un form

    Ciao a tutti

    qualcuno sparebbe indicarmi come "condizionare" il submit di un form in base ad i valori inseriti in una determinata textbox?

    Per capirci, ho la seguente function Javascript:
    codice:
     function controllaIntero(campo) {
    		var temp = document.getElementById(campo).value;		
    			if(!temp.match(/^\d+$/))
    				alert("Campo " + campo + " non contiene un intero")	}
    e nella mia pagina html ho:
    codice:
    <form id="form01" name="form01" action="doAction" method="post">
          <input id="textBox1" name="textBox1" type="text" size="20">
           
    
    
          <input type="submit" value="Insert" onClick="controllaIntero('textBox1')">
    </form>
    Il controllo sul campo textBox1 viene eseguito correttamente, ma anche in caso di valore non intero la action viene eseguita.

    Come posso bloccare l'azione del submit action se il campo passato non è un intero?

    Please help me,

    ciao

  2. #2
    ciao, il controllo va applicato a livello di tag form, non di tag input:

    codice:
    <form id="form01" name="form01" action="doAction" method="post" onsubmit="return controllaIntero('textBox1');">
    con l funzione così modificata:

    codice:
    function controllaIntero(campo) {
    		var temp = document.getElementById(campo).value;		
    			if(!temp.match(/^\d+$/))
    				{ alert("Campo " + campo + " non contiene un intero"); return false; }
                    return true;
            }
    saluti

  3. #3
    Ciao,

    ti ringrazio per la risposta, ma vorrei segnalarti che il risultato è sempre lo stesso, ovvero viene visualizzata la alert in caso di input errato ma il submit viene ugualmente eseguito (e con esso quindi anche la action del form...).

    Altre proposte...?

  4. #4
    devi chiamare la funzione NON sull'onclick ma sull'onsubmit della form

    e fargli ritornare un false in caso di errore

    <form onsubmit="return controllaIntero('textBox1')" ... >

  5. #5
    Originariamente inviato da raven74
    devi chiamare la funzione NON sull'onclick ma sull'onsubmit della form

    e fargli ritornare un false in caso di errore

    <form onsubmit="return controllaIntero('textBox1')" ... >
    Beh, questo era chiaro anche dal suggerimento di moaiamorfo ma come dicevo il risultato non cambia. A scanso di equivoci ho anche fatto il copy/paste del suo codice JS oltre ad aver eliminato l'onclick del submit e messo l'onsubmit nel form. Ma niente...

    Altre idee?

    (ps grazie comunque)

  6. #6
    scusa, sono stordito

    usa la funzione modificata da moaiamorfo

    ma rimetti l'evento sul tasto con questa piccola modifica

    <input type="submit" value="Insert" onClick="return controllaIntero('textBox1')">

  7. #7
    PS
    ma a dire il vero funziona anche con la in controllo nell'onsubmit.

    ecco le due versioni funzionanti su FF.

    Codice PHP:
    <script>
    function 
    controllaIntero(campo) {
        var 
    temp document.getElementById(campo).value;        
        if(!
    temp.match(/^\d+$/)) { 
            
    alert("Campo " campo " non contiene un intero"); return false
            }
        return 
    true;
    }
    </script>

    <form id="form01" name="form01" action="doAction" method="post" onsubmit="return controllaIntero('textBox1')">
          <input id="textBox1" name="textBox1" type="text" size="20">
           


          <input type="submit" value="Insert" >
    </form>



    <form id="form02" name="form02" action="doAction" method="post" >
          <input id="textBox2" name="textBox1" type="text" size="20">
           


          <input type="submit" value="Insert" onclick="return controllaIntero('textBox2')">
    </form> 

  8. #8
    Hai ragione, tutto ok.

    Ma ora complichiamola un pò...

    Supponiamo che le textBox da controllare siano più di una (facciamo 2 x semplicità...) e che la action debba eseere eseguita solo se TUTTE le textbox controllate contengono input appropriati.

    Occorrerebbe chiamare due volte la function sullo stesso evento, e soprattutto occorrerebbe mettere in AND logico i valori di ritorno di queste chiamate... Come fare?

    (ps. grazie mille per il valido aiuto...)

  9. #9
    Risolto tutto facendo:

    codice:
    <input type="submit" value="Click" onClick="return (controllaIntero('textBox1') && controllaIntero('textBox2'))

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.