Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    127

    controllo campi solo al clik dell'invia

    Ciao a tutti,
    ho un form contenente dei campi che al cambiare del loro contenuto viene eseguito il submit in modo da aggiornare i campi sottostanti.
    Il submit per l'inserimento nel db viene fatto solo quando viene cliccato il bottone "invia".

    Sempre in questo form eseguo il controllo dei campi obbligatori che deve essere fatto solo ed esclusivamente quanto viene fatto il click sul bottone "invia" e non all'onChange dei campi contenuti.

    Il controllo è fatto nel seguente modo:
    Ho una funzione validateForm:
    <script language="JavaScript">
    function validateForm(){
    errore='ATTENZIONE!! i seguenti campi non sono stati compilati:\n';
    if(isNull('data')) {errore+='. scegliere la data'; ok=false};
    if(isRangeSel('id_orainizio','id_orafine')) {errore+='. l\'orario della prenotazione'; ok=false};
    ok=true;
    if (! ok) alert (errore);
    return ok;
    }
    </script>

    Nel tag form ho:
    <form action="add.php?<?php echo $qstring?>" method="post" enablecab="No" enctype="multipart/form-data" onSubmit="return validateForm();">

    In questo modo il validateForm lo esegue anche quando qui;
    <input type="text" readonly="yes" name="data" id="data" onChange="submit();">

    Invece in questo caso deve saltarlo.

    Ho provato a togliere l'onSubmit nel tag form e a creare questa funzione:
    <script language="JavaScript">
    function prova(){
    document.forms[0].submit(validateForm());
    }
    </script>

    Ma non esegue il controllo e non fa il submit.

    Come posso fare?

    Spero di essere stata abbastanza chiara.

    Grazie mille a tutti
    Anna

  2. #2
    non è semplice capirci qualcosa in quello che hai scritto!

    prova a dare un po' di ordine e a dividere il codice dalla spiegazione tipo:

    codice:
    <form>
        <input>
        <input>
        .
        .
        .
    </form>
    magari ci si capisce qualcosa...

    per il momento posso consigliarti questo script di validazione dati http://www.manthys.it/software/progetti/ddv/default.asp, mentre qui potrai vedere come funziona http://pro.html.it/articoli/id_573/idcat_11/pro.html...

    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    127
    Forse hai ragione... posto la pagina:

    <form action="add.php?cerca=&idcampo=&idpren=&idcliente= &ordinamento=dt_data" method="post" enablecab="No" enctype="multipart/form-data" onSubmit="return validateForm();">
    <table width="100%" cellpadding="0" cellspacing="0">
    <tr align="center" bgcolor="fbb666">
    <td colspan="2">Inserimento nuova prenotazione</td>

    <tr>
    <td>Cliente</td>
    <td><select name="idclientesel">
    <option value="1" >Comedini Luca</option>
    <option value="5" >Uva Anna Elisa</option>
    </select> </td>
    </tr>
    <tr>
    <td>Campo</td>
    <td> <select name="idcamposel" onChange="submit();">
    <option value="1" >campo da calcetto - campo esterno da calcetto</option>
    </select>
    </td>
    </tr>
    <tr>
    <td height="2">Data prenotazione</td>
    <td height="2"> <input type="text" readonly="yes" name="data" id="data" onChange="submit();" value="">[img]../calendario/img.gif[/img]
    <script type="text/javascript">
    Calendar.setup({
    inputField : "data", // id of the input field
    ifFormat : "%d/%m/%Y", // format of the input field
    showsTime : false, // will display a time selector
    button : "bottone", // trigger for the calendar (button ID)
    singleClick : false, // double-click mode
    step : 1 // show all years in drop-down boxes (instead of every other year as default)
    });
    </script>
    </td>
    </tr>
    <tr>
    <td height="2">Orario di inzio</td>
    <td height="2">
    <select name="id_orainizio" onChange="submit()">
    <option value="">- Orario -</option>
    </select>
    </td>
    </tr>
    <tr>
    <td height="2">Orario di fine</td>
    <td height="2">
    <select name="id_orafine">
    <option value="">- Orario -</option>
    </select>
    </td>
    </tr>
    <tr>
    <td height="2">Confermato</td>
    <td height="2"> <select name="bl_confermato" id="bl_confermato">
    <option value="1">S&igrave;</option>
    <option value="0" selected>No</option>
    </select> </td>
    </tr>
    <tr>
    <td>note</td>
    <td> <textarea name="ac_note" cols=50 rows=5 id="ac_descrizione"></textarea>
    </td>
    </tr>
    <tr bgcolor="fbb666">
    <td colspan="2"></td>
    </tr>
    <tr>
    <td colspan="2"></td>
    </tr>
    <tr>
    <td colspan="2"> <input type="submit" name="invia" value="Aggiungi" class="button">
    <input type="button" value="Ritorna al men&ugrave" onClick="location.href='index.php?cerca=&idcampo=& idpren=&idcliente=&ordinamento=dt_data'" class="button">
    </td>
    </tr>
    <tr>
    <td colspan="2"></td>
    </tr>
    </table>
    </form>
    <script language="JavaScript">
    function validateForm(){
    errore='ATTENZIONE!! i seguenti campi non sono stati compilati:\n';
    if(isNull('data')) {errore+='. scegliere la data'; ok=false};
    if(isRangeSel('id_orainizio','id_orafine')) {errore+='. l\'orario della prenotazione'; ok=false};
    ok=true;
    if (! ok) alert (errore);
    return ok;
    }
    </script>

    come puoi vedere dal codice ci sono tre campi (idcampon, data e id_orainizio) che eseguono il submit all'onChange.

    Quando eseguono il submit, giustamente js fa il controllo dei campi obbligatori.

    Io non voglio che quando esegue onchange faccia il controllo, ma solo quando clicco sul bottone invia.

    Spero che ora si capisca di più.

    Grazie mille
    Anna

  4. #4
    peggio di prima!!!!

    ti ho chiesto di usare il code e non l'hai fatto, ti ho chiesto di mettere tutto in ordine e non lo hai fatto..è difficile capirci qualcosa così!!!
    non ti hanno insegnato a mettere il codice in ordine?
    io quando programmo se non metto ordine poi non ci capisco + nulla!!!

    vabbhe farò uno sforzo e copio la pagina e me la ordino da solo...ma solo x questa volta!!!

    xò mi ci vorrà di +!
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  5. #5
    codice:
    <form action="add.php?cerca=&idcampo=&idpren=&idcliente=&ordinamento=dt_data" method="post" enablecab="No" enctype="multipart/form-data" onSubmit="return validateForm();"> 
        <table width="100%" cellpadding="0" cellspacing="0"> 
            <tr align="center" bgcolor="fbb666"> 
                <td colspan="2">Inserimento nuova prenotazione</td> 
            </tr>
            <tr> 
                <td>Cliente</td> 
                <td>
                    <select name="idclientesel"> 
                        <option value="1" >Comedini Luca</option> 
                        <option value="5" >Uva Anna Elisa</option> 
                    </select> </td> 
            </tr> 
            <tr> 
                <td>Campo</td> 
                <td> 
                    <select name="idcamposel" onChange="submit();"> 
                        <option value="1" >campo da calcetto - campo esterno da calcetto</option> 
                    </select> 
                </td> 
            </tr> 
            <tr> 
                <td height="2">Data prenotazione</td> 
                <td height="2"> <input type="text" readonly="yes"     name="data" id="data" onChange="submit();" value="">
                    [img]../calendario/img.gif[/img] 
                    <script type="text/javascript"> 
                         Calendar.setup({ 
    inputField : "data", // id of the input field 
    ifFormat : "%d/%m/%Y", // format of the input field 
    showsTime : false, // will display a time selector 
    button : "bottone", // trigger for the calendar (button ID) 
    singleClick : false, // double-click mode 
    step : 1 // show all years in drop-down boxes (instead of every other year as default) 
    }); 
                    </script> 
                </td> 
            </tr> 
            <tr> 
                <td height="2">Orario di inzio</td> 
                <td height="2"> 
                    <select name="id_orainizio" onChange="submit()"> 
                        <option value="">- Orario -</option> 
                    </select> 
                </td> 
            </tr> 
            <tr> 
                <td height="2">Orario di fine</td> 
                <td height="2"> 
                   <select name="id_orafine"> 
                        <option value="">- Orario -</option> 
                   </select> 
                </td> 
            </tr> 
            <tr> 
                <td height="2">Confermato</td> 
                <td height="2"> 
                    <select name="bl_confermato" id="bl_confermato"> 
                         <option value="1">Sì</option> 
                         <option value="0" selected>No</option> 
                    </select> 
                </td> 
            </tr> 
            <tr> 
                <td>note</td> 
                <td> 
                    <textarea name="ac_note" cols=50 rows=5 id="ac_descrizione"></textarea> 
                </td> 
            </tr> 
            <tr bgcolor="fbb666"> 
                <td colspan="2"> </td> 
            </tr> 
            <tr> 
                <td colspan="2"> </td> 
            </tr> 
            <tr> 
                <td colspan="2"> <input type="submit" name="invia" value="Aggiungi" class="button"> 
                    <input type="button" value="Ritorna al men&ugrave" onClick="location.href='index.php?cerca=&idcampo=&idpren=&idcliente=&ordinamento=dt_data'" class="button"> 
                </td> 
            </tr> 
            <tr> 
                <td colspan="2"> </td> 
            </tr> 
        </table>
    </form> 
    
    <script language="JavaScript"> 
    function validateForm()
    { 
        errore='ATTENZIONE!! i seguenti campi non sono stati compilati:\n'; 
        if(isNull('data')) 
        {
            errore+='. scegliere la data'; ok=false
        }; 
        if(isRangeSel('id_orainizio','id_orafine
    ')) 
        {
            errore+='. l\'orario della prenotazione'; ok=false
        }; 
        ok=true; 
        if (! ok) alert (errore); 
        return ok; 
    } 
    </script>
    P.S.
    primo errore di sintassi evidenziato in rosso!(me ne sono accorto mettendo in oridne il tuo codice..(ci vuole un po'+ di tempo ma ti accorgi subito degli errori!!!)
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    127
    Mi spiace che ti sei dovuto fare questo sbattimento... io iddento sempre il codice in modo corretto, soprattutto quando programmo utilizzando il notepad, ma, per evitare di inviarti anche la parte in php ho preso solo il codice HTML restituito dalla visualizzazione della pagina e facendo copia e incolla, direttamente l'editor del form mi ha incasinato l'iddentatura (non sapevo come si facesse con questo editor)...

    Spero che ora si riesca a capire di cosa ho bisogno.

    Scusa ancora per lo sbattimento.

    Grazie
    Anna

  7. #7
    per cominciare lo script che hai scritto mi sembra fare un po' di acqua da tutte le parti!

    così mi sembra un pochino + corretto:

    codice:
    function validateForm()
    { 
        errore='ATTENZIONE!! i seguenti campi non sono stati compilati:\n'; 
        ok=true;
        if(isNull('data')) 
        {
            errore+='. scegliere la data'; 
            ok=false;
        } 
         if(isRangeSel('id_orainizio','id_orafine')) 
        {
            errore+='. l orario della prenotazione'; 
            ok=false;
        } 
        if (! ok) alert (errore); 
        return ok; 
    }
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  8. #8
    per quando riguarda il tuo errore togli

    codice:
     onChange="submit():"
    da ogni campo e dovrebbe funzionarti..fammi sapere
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

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.