Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581

    Help su js che convalida form, lo invia, apre popup :(

    ciao,
    ho in un sito una form per il caricamento dei contenuti con due submit: invio modulo ed anteprima

    Quando si fa il submit della form, nel caso di invio se si è in un campo oppure di click sul pulsante di invio modulo, mi dovrebbe applicare il controllo tramite js e, se ha successo, inviare il modulo richiamandone una determinata action

    Se invece si fa click su anteprima, dovrebbe prima fare il controllo js e, se ha successo, inviare il modulo ad una popup

    Il problema è che tutto funzionerebbe, tranne per il fatto che, se non compilo nessun campo e quindi il js ritorna false, cliccando su anteprima restituisce l'alert del js ma apre comunuqe la popup

    come si può risolvere?

    ecco i vari codici:

    la form:
    codice:
    <form name="contenuti" method="post" onSubmit="return CheckContenuti(this);">
    il submit "invia modulo" della form:
    codice:
    <input type="submit" value="Invia modulo" onClick="contenuti.action='bo_contenuti.asp';contenuti.target='_self';" class="bottone150" <%=js_submit%>>
    il submit "Anteprima" della form:
    codice:
    <input type="submit" value="Anteprima" onClick="contenuti.action='bo_popanteprima.asp';contenuti.target='popup2';OpenPopup('about:blank','popup2','346','445');" class="bottone100" <%=js_submit%>>
    la funzione js "CheckContenuti":
    codice:
    function CheckContenuti(f)
    {
    	var errMsg = '';
    	var errMsgLayout = '';
    	var titolo=f.cont_titolo;
    	var layout = f.cont_layout;
    	var testo1=f.cont_testo1;
    	var testo2=f.cont_testo2;
    	var testo3=f.cont_testo3;
    	
    	if ( (titolo.value=="") || ((titolo.value.replace(/\s*/gi,'') == '') || (titolo.value.replace(/\x13\x10*/gi,'') == '')) )
    		errMsg += "- Titolo è obbligatorio e non può essere vuoto.\n";
    	
    	switch (layout.value)
    	{
    		case '1':
    			if ( (testo1.value == "") || ((testo1.value.replace(/\s*/gi,'') == '') || (testo1.value.replace(/\x13\x10*/gi,'') == '')) )
    				errMsgLayout += "Testo #1 è obbligatorio e non può essere vuoto.\n";
    			if ( (testo2.value == "") || ((testo2.value.replace(/\s*/gi,'') == '') || (testo2.value.replace(/\x13\x10*/gi,'') == '')) )
    				errMsgLayout += "Testo #2 è obbligatorio e non può essere vuoto.\n";
    			if ( (testo3.value == "") || ((testo3.value.replace(/\s*/gi,'') == '') || (testo3.value.replace(/\x13\x10*/gi,'') == '')) )
    				errMsgLayout += "Testo #3 è obbligatorio e non può essere vuoto.\n";
    			break;
    		case '2':
    		case '3':
    			if ( (testo1.value == "") || ((testo1.value.replace(/\s*/gi,'') == '') || (testo1.value.replace(/\x13\x10*/gi,'') == '')) )
    				errMsgLayout += "Testo #1 è obbligatorio e non può essere vuoto.\n";
    			break;
    		case '4':
    		case '5':
    			if ( (testo1.value == "") || ((testo1.value.replace(/\s*/gi,'') == '') || (testo1.value.replace(/\x13\x10*/gi,'') == '')) )
    				errMsgLayout += "Testo #1 è obbligatorio e non può essere vuoto.\n";
    			if ( (testo2.value == "") || ((testo2.value.replace(/\s*/gi,'') == '') || (testo2.value.replace(/\x13\x10*/gi,'') == '')) )
    				errMsgLayout += "Testo #2 è obbligatorio e non può essere vuoto.\n";
    			break;
    	}
    	
    	if (errMsgLayout != '')
    		errMsg += "- Layout #"+layout.value+":\n"+errMsgLayout;
      
      	if (errMsg != '')
    	{
    		errMsg = "Si sono verificati i seguenti errori:\n\n" + errMsg;
    		alert(errMsg);
    		return false;
    	}
    	//else
    	//	return true;
    }
    la funzione js "Popup":
    codice:
    function Popup(theURL,winName,features) {
      window.open(theURL,winName,features);
    }

    grazie mille fin d'ora a chi mi aiuteà a far funzionare il tutto come dovrebbe

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Sono sicuro che potresti trovare un titolo migliore per la discussione... magari cosi' chi non e' interessato non e' costretto ad aprirla per verificare

    Prova a correggere o suggerirmela... per questa volta
    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 Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    boh .. io ho corretto il titolo ma non me lo cambia come titolo della discussione ma solo come titolo del post

    vabe' cmq è: "Help su js che convalida form, lo invia, apre popup "

    rimane sempre un js maledetto però

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ora la popup si apre in ogno caso...

    Modifica:

    <input type="submit" value="Anteprima"
    onClick="if(CheckContenuti(this.form)) {contenuti.action='bo_popanteprima.asp'; contenuti.target='popup2'; OpenPopup('about:blank',
    'popup2', '346', '445');}"
    class="bottone100" <%=js_submit%>>

    ... anche se non ho idea di cosa contiene <%=js_submit%> :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

  5. #5
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    tnx mille funziona

    alla fine ho tolto l'azione onSubmit nel tag form

    ed ho modificato così:

    pulsante "Invia modulo":
    codice:
    <input type="submit" value="Invia modulo" onClick="if(CheckContenuti(this.form)) {contenuti.action='bo_contenuti.asp';contenuti.target='_self';}" class="bottone150" <%=js_submit%>>
    pulsante "Anteprima":
    codice:
    <input type="submit" value="Anteprima" onClick="if(CheckContenuti(this.form)) {self.name='contenuti';OpenPopup('about:blank','popup2','346','445');contenuti.action='bo_popanteprima.asp';contenuti.target='popup2';}" class="bottone100" <%=js_submit%>>
    l'ho fatta sta modifica perchè altrimenti funzionava bene cmq ma mi dava 2 volte l'alert se clikkavo su anteprima..misteri


    Ora una piccola miglioria sempre se si riesce...
    dato che la apgina è un po' lunghetta se clikko su uno dei due tasti e da l'alert con l'errore .. poi ritorna all'inizio della pagina ... è possibile fare in modo che la pagina cmq resti ferma dov'è quando si clikka?

    Grazie mille

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 © 2024 vBulletin Solutions, Inc. All rights reserved.