Target multiplo form

Salve a tutti. Ho la necessità di cambiare il target della mia form (_self/_blank) a seconda del bottone (submit) che seleziono.

Ho già trovato del codice in rete, ma purtroppo non mi funziona. Vi illustro qualcosa che ho trovato a giro (adattato al mio codice):

[code]

<head>

<script type="text/javascript" src="JS/jquery.1.3.2.js"></script>

<script type="text/javascript">

        $("#salva").click(function () {
            $("myform").attr("target", "_self");
            $("myform").submit();
    
        });
        $("#visualizza").click(function () {
            $("myform").attr("target", "_blank");
            $("myform").submit();
        });

</script>

</head>

<body>

   <form name="myform" id="modifica_punto-vendita" action="Server/modifica_punto-vendita.php" method="post" target="_self">
     <h2>Data di oggi:</h2>
     <input type="text" name="data" style="width:600px" value="<?php echo $data; ?>" />
 
     <h2>Titolo:</h2>
     <input type="text" name="titolo" style="width:600px" value="titolo" />
 
     <h2>Testo:</h2>
     <textarea name="testo" rows="8" style="width:600px">Testo</textarea>
 
     <br /><br />
    <input type="button" name="submit" id="visualizza" value="VISUALIZZA PAGINA"  class="call-to-action"  />    

    <input type="button" name="submit" id="salva" value="SALVA MODIFICHE"  class="call-to-action"  />    
 </form>

</body>

[/code]

Voglio evidenziare che all'inizio i bottoni erano delle submit, ma un mio amico mi ha segnalato che devono essere bottoni perché prima va cambiato il target della form e dopo, dentro la funzione jquery, bisogna dare il submit.

Questo è solo un esempio dei tanti che ho provato......

Aspetto impaziente un vostro suggerimento!

Grazie!

inviato 5 anni fa
Schiappa
X 0 X

Francamente non ho compreso a cosa ti serva modificare il target di un form, o per lo meno se ci dici cosa vuoi fare ti si da una strada.

Non è finita qui. Submit scatena l'evento per il quale il form viene spedito, ma se usi button senza specificare un evento da associare non fa nulla.

Se volevi controllare l'evento, ti bastava usare onsubmit nel form, ad ogni buon conto per modificare un attributo di un elemento della pagina non ti serve scatenare tutta la potenza di jquery ma due righe di javascript, ad esempio:

<form id="form" method="post" action="fai tu" target="_self" onsubmit="document.getElementById('form').target = '_blank'">

e sotto il classico pulsante submit.

risposto 5 anni fa
Marco Grazia
X 0 X

Grazie mille Marco per la risposta, ma pultroppo la soluzione che mi offri tu non soddisfa le mie esigenze.

Ti spiego meglio: la pagina serve ad amministrarne un'altra; quindi mi servono 2 submit (così l'ho concepita), uno per visualizzare sulla pagina finale le modifiche effettuate, uno per salvarle e quindi renderle effettive nelle pagine pubbliche.

Uno di questi submit (quello per la visualizzazione) mi dovrà quindi aprire un'altra pagina in un'altra scheda (_blank), lasciando invariata la pagina di modifica su cui stavo lavorando, mentre l'altro (quello per i salvataggio) dovrà caricare la pagina che mi identifica il successo dell'operazione nella medesima scheda (_self).

Nella soluzione che mi hai suggerito te non vengono considerati i due submit diversi e non posso utilizzare un submit ed un bottone perché i dati POST mi servono in entrambi i casi.

Ho provato anche con:

<code>

<script type="text/javascript">

    var form = document.getElementById('modifica_punto-vendita');
     document.getElementById('salva').onclick = function() {
        form.target = '_self';
        form.submit();
    }
    document.getElementById('visualizza').onclick = function() {
        form.target = '_blank';
        form.submit();
    }

</script>

</code>

Sinceramente non capisco perché le funzioni che utilizzo non mi diano il risultato voluto....

risposto 5 anni fa
Schiappa
X 0 X

Il motivo per cui non funzionano è semplicissimo, la prima invia il form dopo aver modificato il target a _self la seconda... scusa cosa dovrebbe inviare se la prima l'ha già fatto?

Ma quello che proprio non riesco a comprendere è perché la fai così complessa.

Se ho compreso quello che cerchi di fare è una specie di monitor in cui in una pagina, quella che si apre con _blank, vengono visualizzati i dati ricevendo il focus e una salva i dati se nella prima chi la sta visualizzando decide che va tutto bene.

Puoi fare una cosa, ovvero che l'amministratore salvi i dati direttamente dalla pagina aperta con _blank invece che dal forum, costruire l'applicazione php in modo che non cancelli i dati nel form, o più semplicemente come dici tu due tasti uno per monitorare e uno per salvare, ma non c'è bisogno allora di tutto questo caos.

Il primo quello per il monitor, è effettivamente un tasto button, che nell'evento onclick richiama una funzione javascript che apre la pagina, classica funzione che apre una popup, ma aprendola ne crea il contenuto con i dati del form.

Difficile? Nemmeno tanto, la pagina popup sarà una pagina in php a cui vengono passati via get i dati da mostrare, ad esempio (metto dati a caso non conoscendo il tuo form):

function apripagina(nm, cgn, anni) {

var w = window.open('pagina_monitor.php?nome=nm&cognome=cgn&eta=anni','width=100%,height=100%');

}

questa già apre una pagina chiamata pagina_monitor.php a cui passa i dati nome, cognome, età presi così come sono passati alla funzione. Ovvio sta a te creare la pagina in php con il giusto layout e i giusti dati.

Il tuo form avrà però due pulsanti:

<input type="button" value="monitor" onclick="apripagina('paperon','de paperoni', '105')" />

e un submit normale che invia i dati per il salvataggio dopo che sarà stata monitorata.

Al limite si può fare un'altra cosa, mettere il tasto di submit disabilitato e abilitarlo solo dopo che la pagina di monitor ha perso il focus così che l'amministratore sia almeno obbligato a guardarla prima di inviare i dati.

risposto 5 anni fa
Marco Grazia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda