Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926

    Validazione form e invio modulo

    Sto realizzando un form per inserire dei record in un database access.
    Vi sono diversi campi e alla pressione del tasto di invio mi controlla la validità dei valori inseriti in questo modo:

    <input type="submit" name="cerca" onClick="this.form.action='insricriep.asp';this.fo rm. submit();MM_validateForm('descrizione','
    ','R','prezzo','','R');return document.MM_returnValue" value="Inserisci il record">

    Il problema è che, nel caso commetto errori di inserimento, vengo avvisato dalla pop-up di quello che non è esatto ma poi parte cmq l'inserimento.

    Come devo fare per far si che in presenza di errori mi venga inibito l'invio del form e mi torna alla pagina per apportare le opportune modifiche??

    Ho provato senza successo ad invertire gli ordini delle istruzioni ma da quanto ho capito dopo il returnValue non può essere messo niente...

    Premetto che il campo action del form devo lasciarlo vuoto in quanto ci sono due select dinamiche dipendenti che all'evento onchange fanno il submit e ne leggono il contenuto per popolarsi dinamicamente.

    Grazie
    Luca

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    le funzioni di validazione non si applicano al pulsante di submit ma all'intero form:

    <form ... ...
    onsubmit="MM_validateForm('descrizione', '', 'R', 'prezzo', '', 'R'); if(document.MM_returnValue) {this.form.action='insricriep.asp'} else {return false};">
    ...
    ...
    <input type="submit" name="cerca" value="Inserisci il record">

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    Grazie per l'attenzione....
    Il mio problema è un po + complesso.

    Inizialmente la validazione del form era correttamente inserita nel modo che mi hai indicato tu,
    però ho una select come questa:

    <select name="sel_marca" id="sel_marca" onChange="this.form.submit()">

    che all'evento onchange fa il submit per prendere il valore scelto ed utilizzarlo come chiave di ricerca per popolare la seconda select dipendente da questa.

    Mettendo il controllo del form come andrebbe messo, ogni volta che cambio il valore della select mi parte il controllo del form, e non è bello....

    Avevo risolto parzialmente mettendo il controllo del form nel pulsante di submit ed infatti il check me lo fa solo quando premo invio ma in caso di errore non mi intercetta l'invio per rimandarmi alla pagina bensì invia il modulo comunque....

    garzie
    luca

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da lucalicc
    Mettendo il controllo del form come andrebbe messo, ogni volta che cambio il valore della select mi parte il controllo del form, e non è bello....
    Non dovrebbe essere così. Se non ricordo male, il gestore di eventi 'onsubmit' viene scatenato solo dalla pressione del tasto submit da parte dell'utente, e non da un 'submit()' procedurale.

    Originariamente inviato da lucalicc
    Avevo risolto parzialmente mettendo il controllo del form nel pulsante di submit ed infatti il check me lo fa solo quando premo invio ma in caso di errore non mi intercetta l'invio per rimandarmi alla pagina bensì invia il modulo comunque....
    Questa soluzione dovrebbe essere comunque corretta, e se non funziona significa che non gestisci correttamente l'errore oppure hai un errore di sintassi javascript nella funzione.

  5. #5
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    Eppure mi parte il check del form anche quando cambio la select.

    La porzione che effettua il controllo del form è questa:
    (è quella generata da dreamweaver con il comportamento Check Module):
    ----------------------------------------------
    function MM_validateForm() { //v4.0
    var i,p,q,nm,test,num,min,max,errors='',args=MM_valida teForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
    if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
    if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
    } else if (test!='R') { num = parseFloat(val);
    if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
    if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
    min=test.substring(8,p); max=test.substring(p+1);
    if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
    } if (errors) alert('The following error(s) occurred:\n'+errors);
    document.MM_returnValue = (errors == '');
    -------------------------------------------------------

    mentre l'evento onchange che genera il sunmit procedurale della prima select è questo:

    <select name="sel_marca" id="sel_marca" onChange="this.form.submit()">

    ---------------------------------------------------

    il pulsante submit invece ha questo codice

    <input type="submit" name="cerca" onClick="this.form.action='insricriep.asp';this.fo rm.submit();MM_validateForm('descrizione','','R',' prezzo','','R');return document.MM_returnValue" value="Inserisci il record">

    -----------------------------------------------------

    per quel poco che mastico di scripting ho provato ad aggirare il problema ma il risultato migliore che ho ottenuto è questo ma non mi soddisfa al cento per cento...

    Grazie per l'aiuto
    Luca

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Concordo con le osservazioni fatte piu' sopra, comunque puoi provare a cambiare il tipo di pulsante:

    <input type="button" name="cerca" value="Inserisci il record"
    onClick="MM_validateForm('descrizione', '', 'R', 'prezzo', '', 'R'); if(document.MM_returnValue) {this.form.action='insricriep.asp';this.form.submi t()}">

    ciao

    ps: se osservi bene la successione delle istruzioni e la confronti con la tua originale puoi notare che tu prima inviavi il form, poi... :master:

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    Perfetto!!
    Funziona alla grande e ho risolto tutti i problemi!!

    Grazie tante e a buon rendere...
    (sicuramente in un altro campo

    ciao
    Luca

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.